{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Model Playground\n",
    "\n",
    "**Various tests and small experiments on toy networks.**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "from imp import reload\n",
    "import nupic.research.frameworks.dynamic_sparse.networks.layers as layers\n",
    "reload(layers);\n",
    "import nupic.research.frameworks.dynamic_sparse.networks.layers as networks\n",
    "reload(networks);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [],
   "source": [
    "from collections import OrderedDict\n",
    "\n",
    "import numpy as np\n",
    "import torch\n",
    "from torchvision import models\n",
    "from nupic.research.frameworks.dynamic_sparse.networks.layers import DSConv2d\n",
    "from nupic.torch.models.sparse_cnn import gsc_sparse_cnn, gsc_super_sparse_cnn, GSCSparseCNN, MNISTSparseCNN\n",
    "from nupic.research.frameworks.dynamic_sparse.networks import mnist_sparse_dsnn, GSCSparseFullCNN, gsc_sparse_dsnn_fullyconv\n",
    "from torchsummary import summary\n",
    "\n",
    "from torchviz import make_dot"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Load Models"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [],
   "source": [
    "# resnet18 = models.resnet18()\n",
    "resnet50 = models.resnet50()\n",
    "\n",
    "alexnet = models.alexnet()\n",
    "# mnist_scnn = MNISTSparseCNN()\n",
    "gsc_scnn = GSCSparseCNN()\n",
    "# dscnn = mnist_sparse_dscnn({})\n",
    "# gscf = gsc_sparse_dscnn_fullyconv({'prune_methods': [\"none\", \"static\"]}) # GSCSparseFullCNN(cnn_out_channels=(32, 64, 1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 541,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "GSCSparseCNN(\n",
       "  (cnn1): Conv2d(1, 64, kernel_size=(5, 5), stride=(1, 1))\n",
       "  (cnn1_batchnorm): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=False, track_running_stats=True)\n",
       "  (cnn1_maxpool): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
       "  (cnn1_kwinner): KWinners2d(channels=64, n=0, percent_on=0.095, boost_strength=1.5, boost_strength_factor=0.9, k_inference_factor=1.5, duty_cycle_period=1000)\n",
       "  (cnn2): Conv2d(64, 64, kernel_size=(5, 5), stride=(1, 1))\n",
       "  (cnn2_batchnorm): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=False, track_running_stats=True)\n",
       "  (cnn2_maxpool): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
       "  (cnn2_kwinner): KWinners2d(channels=64, n=0, percent_on=0.125, boost_strength=1.5, boost_strength_factor=0.9, k_inference_factor=1.5, duty_cycle_period=1000)\n",
       "  (flatten): Flatten()\n",
       "  (linear): SparseWeights(\n",
       "    weight_sparsity=0.4\n",
       "    (module): Linear(in_features=1600, out_features=1000, bias=True)\n",
       "  )\n",
       "  (linear_bn): BatchNorm1d(1000, eps=1e-05, momentum=0.1, affine=False, track_running_stats=True)\n",
       "  (linear_kwinner): KWinners(n=1000, percent_on=0.1, boost_strength=1.5, boost_strength_factor=0.9, k_inference_factor=1.5, duty_cycle_period=1000)\n",
       "  (output): Linear(in_features=1000, out_features=12, bias=True)\n",
       "  (softmax): LogSoftmax()\n",
       ")"
      ]
     },
     "execution_count": 541,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# resnet18\n",
    "# resnet18\n",
    "# mnist_scnn\n",
    "gsc_scnn\n",
    "# dscnn\n",
    "# gscf"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 412,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "hi <class 'nupic.torch.models.sparse_cnn.GSCSparseCNN'>\n",
      "----------------------------------------------------------------\n",
      "        Layer (type)               Output Shape         Param #\n",
      "================================================================\n",
      "            Conv2d-1           [-1, 32, 28, 28]             832\n",
      "       BatchNorm2d-2           [-1, 32, 28, 28]               0\n",
      "        KWinners2d-3           [-1, 32, 28, 28]               0\n",
      "         MaxPool2d-4           [-1, 32, 14, 14]               0\n",
      "      SparseConv2d-5           [-1, 64, 10, 10]          51,264\n",
      "       BatchNorm2d-6           [-1, 64, 10, 10]               0\n",
      "        KWinners2d-7           [-1, 64, 10, 10]               0\n",
      "         MaxPool2d-8             [-1, 64, 5, 5]               0\n",
      "           Flatten-9                 [-1, 1600]               0\n",
      "           Linear-10                   [-1, 12]          19,212\n",
      "       LogSoftmax-11                   [-1, 12]               0\n",
      "================================================================\n",
      "Total params: 71,308\n",
      "Trainable params: 71,308\n",
      "Non-trainable params: 0\n",
      "----------------------------------------------------------------\n",
      "Input size (MB): 0.00\n",
      "Forward/backward pass size (MB): 0.79\n",
      "Params size (MB): 0.27\n",
      "Estimated Total Size (MB): 1.07\n",
      "----------------------------------------------------------------\n"
     ]
    }
   ],
   "source": [
    "inp = torch.rand(2, 1, 32, 32)\n",
    "gsc_scnn(inp).shape\n",
    "gscf(inp).shape\n",
    "\n",
    "summary(gscf, input_size=(1, 32, 32))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Fun with sequentials."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 336,
   "metadata": {},
   "outputs": [],
   "source": [
    "sq0 = torch.nn.Sequential(OrderedDict([('sq1', torch.nn.Sequential(OrderedDict([('cnn1', torch.nn.Conv2d(3, 3, 3))])) )]))\n",
    "sq1 = torch.nn.Sequential(od)\n",
    "sq2 = torch.nn.Sequential(torch.nn.Sequential(od), torch.nn.Conv2d(3, 3, 3))\n",
    "sq3 = torch.nn.Sequential(OrderedDict([('sq1', sq1), ('sq2', sq2)]))\n",
    "sq4 = torch.nn.Sequential(sq3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 339,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[False]\n",
      "name\n",
      " Sequential(\n",
      "  (0): Sequential(\n",
      "    (sq1): Sequential(\n",
      "      (cnn1): Conv2d(3, 3, kernel_size=(3, 3), stride=(1, 1))\n",
      "    )\n",
      "    (sq2): Sequential(\n",
      "      (0): Sequential(\n",
      "        (cnn1): Conv2d(3, 3, kernel_size=(3, 3), stride=(1, 1))\n",
      "      )\n",
      "      (1): Conv2d(3, 3, kernel_size=(3, 3), stride=(1, 1))\n",
      "    )\n",
      "  )\n",
      ")\n",
      "[True]\n",
      "name\n",
      "0 Sequential(\n",
      "  (sq1): Sequential(\n",
      "    (cnn1): Conv2d(3, 3, kernel_size=(3, 3), stride=(1, 1))\n",
      "  )\n",
      "  (sq2): Sequential(\n",
      "    (0): Sequential(\n",
      "      (cnn1): Conv2d(3, 3, kernel_size=(3, 3), stride=(1, 1))\n",
      "    )\n",
      "    (1): Conv2d(3, 3, kernel_size=(3, 3), stride=(1, 1))\n",
      "  )\n",
      ")\n",
      "[True, False]\n",
      "name\n",
      "0.sq1 Sequential(\n",
      "  (cnn1): Conv2d(3, 3, kernel_size=(3, 3), stride=(1, 1))\n",
      ")\n",
      "[True, False, False]\n",
      "name\n",
      "0.sq1.cnn1 Conv2d(3, 3, kernel_size=(3, 3), stride=(1, 1))\n",
      "[True, False]\n",
      "name\n",
      "0.sq2 Sequential(\n",
      "  (0): Sequential(\n",
      "    (cnn1): Conv2d(3, 3, kernel_size=(3, 3), stride=(1, 1))\n",
      "  )\n",
      "  (1): Conv2d(3, 3, kernel_size=(3, 3), stride=(1, 1))\n",
      ")\n",
      "[True, False, True]\n",
      "name\n",
      "0.sq2.0 Sequential(\n",
      "  (cnn1): Conv2d(3, 3, kernel_size=(3, 3), stride=(1, 1))\n",
      ")\n",
      "[True, False, True]\n",
      "name\n",
      "0.sq2.1 Conv2d(3, 3, kernel_size=(3, 3), stride=(1, 1))\n"
     ]
    }
   ],
   "source": [
    "for n, m in sq4.named_modules():\n",
    "    ns = n.split('.')\n",
    "    print([n_.isdigit() for n_ in ns])\n",
    "    print('name')\n",
    "    print(n, m)   \n",
    "\n",
    "# for n, m in sq2._modules.items():\n",
    "#     print(n, m)   "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Fun with grads"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 114,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(tensor([0.2000, 0.2000, 0.2000]),\n",
       " tensor([0.2000, 0.2000, 0.2000]),\n",
       " tensor([-0.3600]))"
      ]
     },
     "execution_count": 114,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "v1 = torch.tensor([0., 0., 0.], requires_grad=True)\n",
    "v2 = torch.tensor([1., 2., 3.], requires_grad=True)\n",
    "v3 = torch.tensor([5.], requires_grad=True)\n",
    "v4 = (v1.sum() + v2.sum()) / v3\n",
    "h = v3.register_hook(lambda grad: grad * 1.5)  # double the gradient\n",
    "\n",
    "v4.backward(torch.tensor([1.]))\n",
    "v1.grad, v2.grad, v3.grad"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 118,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(tensor([0.2000, 0.2000, 0.2000]),\n",
       " tensor([0.2000, 0.2000, 0.2000]),\n",
       " tensor([-1.4400]))"
      ]
     },
     "execution_count": 118,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "v1 = torch.tensor([1., 4., 1.], requires_grad=True)\n",
    "v2 = torch.tensor([1., 2., 3.], requires_grad=True)\n",
    "v3 = torch.tensor([5.], requires_grad=True)\n",
    "v4 = (v1.sum() + v2.sum()) / v3\n",
    "h = v3.register_hook(lambda grad: grad * 3.0)  # double the gradient\n",
    "\n",
    "v4.backward(torch.tensor([1.]))\n",
    "v1.grad, v2.grad, v3.grad"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Wide RESNET"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 262,
   "metadata": {},
   "outputs": [],
   "source": [
    "import math\n",
    "import torch\n",
    "import torch.nn as nn\n",
    "import torch.nn.functional as F\n",
    "\n",
    "\n",
    "class BasicBlock(nn.Module):\n",
    "    def __init__(self, in_planes, out_planes, stride, dropRate=0.0):\n",
    "        super(BasicBlock, self).__init__()\n",
    "        self.bn1 = nn.BatchNorm2d(in_planes)\n",
    "        self.relu1 = nn.ReLU(inplace=True)\n",
    "        self.conv1 = nn.Conv2d(in_planes, out_planes, kernel_size=3, stride=stride,\n",
    "                               padding=1, bias=False)\n",
    "        self.bn2 = nn.BatchNorm2d(out_planes)\n",
    "        self.relu2 = nn.ReLU(inplace=True)\n",
    "        self.conv2 = nn.Conv2d(out_planes, out_planes, kernel_size=3, stride=1,\n",
    "                               padding=1, bias=False)\n",
    "        self.droprate = dropRate\n",
    "        self.equalInOut = (in_planes == out_planes)\n",
    "        self.convShortcut = (not self.equalInOut) and nn.Conv2d(in_planes, out_planes, kernel_size=1, stride=stride,\n",
    "                               padding=0, bias=False) or None\n",
    "    def forward(self, x):\n",
    "        if not self.equalInOut:\n",
    "            x = self.relu1(self.bn1(x))\n",
    "        else:\n",
    "            out = self.relu1(self.bn1(x))\n",
    "        out = self.relu2(self.bn2(self.conv1(out if self.equalInOut else x)))\n",
    "        if self.droprate > 0:\n",
    "            out = F.dropout(out, p=self.droprate, training=self.training)\n",
    "        out = self.conv2(out)\n",
    "        return torch.add(x if self.equalInOut else self.convShortcut(x), out)\n",
    "\n",
    "class NetworkBlock(nn.Module):\n",
    "    def __init__(self, nb_layers, in_planes, out_planes, block, stride, dropRate=0.0):\n",
    "        super(NetworkBlock, self).__init__()\n",
    "        self.layer = self._make_layer(block, in_planes, out_planes, nb_layers, stride, dropRate)\n",
    "    def _make_layer(self, block, in_planes, out_planes, nb_layers, stride, dropRate):\n",
    "        layers = []\n",
    "        for i in range(int(nb_layers)):\n",
    "            layers.append(block(i == 0 and in_planes or out_planes, out_planes, i == 0 and stride or 1, dropRate))\n",
    "        return nn.Sequential(*layers)\n",
    "    def forward(self, x):\n",
    "        return self.layer(x)\n",
    "\n",
    "class WideResNet(nn.Module):\n",
    "    def __init__(self, depth, num_classes, widen_factor=1, dropRate=0.0):\n",
    "        super(WideResNet, self).__init__()\n",
    "        nChannels = [16, 16*widen_factor, 32*widen_factor, 64*widen_factor]\n",
    "        assert((depth - 4) % 6 == 0)\n",
    "        n = (depth - 4) / 6\n",
    "        block = BasicBlock\n",
    "        # 1st conv before any network block\n",
    "        self.conv1 = nn.Conv2d(3, nChannels[0], kernel_size=3, stride=1,\n",
    "                               padding=1, bias=False)\n",
    "        # 1st block\n",
    "        self.block1 = NetworkBlock(n, nChannels[0], nChannels[1], block, 1, dropRate)\n",
    "        # 2nd block\n",
    "        self.block2 = NetworkBlock(n, nChannels[1], nChannels[2], block, 2, dropRate)\n",
    "        # 3rd block\n",
    "        self.block3 = NetworkBlock(n, nChannels[2], nChannels[3], block, 2, dropRate)\n",
    "        # global average pooling and classifier\n",
    "        self.bn1 = nn.BatchNorm2d(nChannels[3])\n",
    "        self.relu = nn.ReLU(inplace=True)\n",
    "        self.fc = nn.Linear(nChannels[3], num_classes)\n",
    "        self.nChannels = nChannels[3]\n",
    "\n",
    "        for m in self.modules():\n",
    "            if isinstance(m, nn.Conv2d):\n",
    "                nn.init.kaiming_normal_(m.weight, mode='fan_out', nonlinearity='relu')\n",
    "            elif isinstance(m, nn.BatchNorm2d):\n",
    "                m.weight.data.fill_(1)\n",
    "                m.bias.data.zero_()\n",
    "            elif isinstance(m, nn.Linear):\n",
    "                m.bias.data.zero_()\n",
    "    def forward(self, x):\n",
    "        out = self.conv1(x)\n",
    "        out = self.block1(out)\n",
    "        out = self.block2(out)\n",
    "        out = self.block3(out)\n",
    "        out = self.relu(self.bn1(out))\n",
    "        out = F.avg_pool2d(out, 8)\n",
    "        out = out.view(-1, self.nChannels)\n",
    "        return self.fc(out)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 267,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "WideResNet(\n",
       "  (conv1): Conv2d(3, 16, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "  (block1): NetworkBlock(\n",
       "    (layer): Sequential(\n",
       "      (0): BasicBlock(\n",
       "        (bn1): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu1): ReLU(inplace)\n",
       "        (conv1): Conv2d(16, 16, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "        (bn2): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu2): ReLU(inplace)\n",
       "        (conv2): Conv2d(16, 16, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      )\n",
       "      (1): BasicBlock(\n",
       "        (bn1): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu1): ReLU(inplace)\n",
       "        (conv1): Conv2d(16, 16, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "        (bn2): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu2): ReLU(inplace)\n",
       "        (conv2): Conv2d(16, 16, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      )\n",
       "    )\n",
       "  )\n",
       "  (block2): NetworkBlock(\n",
       "    (layer): Sequential(\n",
       "      (0): BasicBlock(\n",
       "        (bn1): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu1): ReLU(inplace)\n",
       "        (conv1): Conv2d(16, 32, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n",
       "        (bn2): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu2): ReLU(inplace)\n",
       "        (conv2): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "        (convShortcut): Conv2d(16, 32, kernel_size=(1, 1), stride=(2, 2), bias=False)\n",
       "      )\n",
       "      (1): BasicBlock(\n",
       "        (bn1): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu1): ReLU(inplace)\n",
       "        (conv1): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "        (bn2): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu2): ReLU(inplace)\n",
       "        (conv2): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      )\n",
       "    )\n",
       "  )\n",
       "  (block3): NetworkBlock(\n",
       "    (layer): Sequential(\n",
       "      (0): BasicBlock(\n",
       "        (bn1): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu1): ReLU(inplace)\n",
       "        (conv1): Conv2d(32, 64, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n",
       "        (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu2): ReLU(inplace)\n",
       "        (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "        (convShortcut): Conv2d(32, 64, kernel_size=(1, 1), stride=(2, 2), bias=False)\n",
       "      )\n",
       "      (1): BasicBlock(\n",
       "        (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu1): ReLU(inplace)\n",
       "        (conv1): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "        (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu2): ReLU(inplace)\n",
       "        (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      )\n",
       "    )\n",
       "  )\n",
       "  (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "  (relu): ReLU(inplace)\n",
       "  (fc): Linear(in_features=64, out_features=10, bias=True)\n",
       ")"
      ]
     },
     "execution_count": 267,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "WideResNet(16, 10)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Fun with Learning Rates and Decays"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 586,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([[1.8969, 1.8969, 1.8969, 1.8969, 1.8969],\n",
      "        [1.1014, 1.1014, 1.1014, 1.1014, 1.1014],\n",
      "        [1.5508, 1.5508, 1.5508, 1.5508, 1.5508],\n",
      "        [1.9652, 1.9652, 1.9652, 1.9652, 1.9652]], dtype=torch.float64)\n",
      "tensor([[1.8969, 1.8969, 1.8969, 1.8969, 1.8969],\n",
      "        [1.1014, 1.1014, 1.1014, 1.1014, 1.1014],\n",
      "        [1.5508, 1.5508, 1.5508, 1.5508, 1.5508],\n",
      "        [1.9652, 1.9652, 1.9652, 1.9652, 1.9652]], dtype=torch.float64)\n",
      "check_grad\n",
      "[[1.89687006 1.89687006 1.89687006 1.89687006 1.89687006]\n",
      " [1.10136331 1.10136331 1.10136331 1.10136331 1.10136331]\n",
      " [1.55079367 1.55079367 1.55079367 1.55079367 1.55079367]\n",
      " [1.96519422 1.96519422 1.96519422 1.96519422 1.96519422]]\n",
      "[[1.89687006 1.89687006 1.89687006 1.89687006 1.89687006]\n",
      " [1.10136331 1.10136331 1.10136331 1.10136331 1.10136331]\n",
      " [1.55079367 1.55079367 1.55079367 1.55079367 1.55079367]\n",
      " [1.96519422 1.96519422 1.96519422 1.96519422 1.96519422]]\n"
     ]
    }
   ],
   "source": [
    "import torch\n",
    "import numpy as np\n",
    "\n",
    "np.random.seed(123)\n",
    "np.set_printoptions(8, suppress=True)\n",
    "\n",
    "x_numpy = np.random.random((3, 4)).astype(np.double)\n",
    "x_torch = torch.tensor(x_numpy, requires_grad=True)\n",
    "x_torch2 = torch.tensor(x_numpy, requires_grad=True)\n",
    "\n",
    "w_numpy = np.random.random((4, 5)).astype(np.double)\n",
    "w_torch = torch.tensor(w_numpy, requires_grad=True)\n",
    "w_torch2 = torch.tensor(w_numpy, requires_grad=True)\n",
    "\n",
    "def log_grad(grad):\n",
    "    print(grad)\n",
    "    \n",
    "w_torch.register_hook(log_grad)\n",
    "w_torch2.register_hook(log_grad)\n",
    "\n",
    "lr = 0.00001\n",
    "weight_decay = 0.9\n",
    "sgd = torch.optim.SGD([w_torch], lr=lr, weight_decay=0)\n",
    "sgd2 = torch.optim.SGD([w_torch2], lr=lr, weight_decay=weight_decay)\n",
    "\n",
    "y_torch = torch.matmul(x_torch, w_torch)\n",
    "y_torch2 = torch.matmul(x_torch2, w_torch2)\n",
    "\n",
    "loss = y_torch.sum()\n",
    "loss2 = y_torch2.sum()\n",
    "\n",
    "sgd.zero_grad()\n",
    "sgd2.zero_grad()\n",
    "\n",
    "loss.backward()\n",
    "loss2.backward()\n",
    "\n",
    "sgd.step()\n",
    "sgd2.step()\n",
    "\n",
    "w_grad = w_torch.grad.data.numpy()\n",
    "w_grad2 = w_torch2.grad.data.numpy()\n",
    "\n",
    "print(\"check_grad\")\n",
    "print(w_grad)\n",
    "print(w_grad2 - weight_decay * w_numpy)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# More fun with Gradients"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "------- Conv2d --------\n",
      "\n",
      "      Computing grads...\n",
      "         w-grad shape =  torch.Size([3, 3, 3, 3])\n",
      "         b-grad shape =  torch.Size([3])\n",
      "\n",
      "      Checking results...\n",
      "         Optimized weight - All close to 1: tensor(True)\n",
      "         Optimized Bias - All close to 1: tensor(False)\n",
      "\n",
      "------- Linear --------\n",
      "\n",
      "      Computing grads...\n",
      "         b-grad shape =  torch.Size([100])\n",
      "         w-grad shape =  torch.Size([100, 10])\n",
      "\n",
      "      Checking results...\n",
      "         Optimized weight - All close to 1: tensor(True)\n",
      "         Optimized Bias - All close to 1: tensor(False)\n",
      "\n"
     ]
    }
   ],
   "source": [
    "import torch\n",
    "\n",
    "# -----------------\n",
    "# Helper function\n",
    "# -----------------\n",
    "def shape(t):\n",
    "    if isinstance(t, tuple):\n",
    "        return tuple(t_.shape if t_ is not None else None for t_ in t)\n",
    "    else:\n",
    "        return t.shape\n",
    "\n",
    "# -----------------\n",
    "# Grad hooks\n",
    "# -----------------\n",
    "\n",
    "# Zeros grad for weights\n",
    "def w_hook(grad):\n",
    "    print(' '*8, 'w-grad shape = ', shape(grad))\n",
    "    grad[:] = 0\n",
    "    return grad\n",
    "\n",
    "# No change for biases.\n",
    "def b_hook(grad):\n",
    "    print(' '*8, 'b-grad shape = ', shape(grad))\n",
    "    return grad\n",
    "\n",
    "# -----------------------\n",
    "# Test layers with biases\n",
    "# -----------------------\n",
    "\n",
    "# The following should confirm whether non-zero biases with non-zero gradient flows\n",
    "# yield changes to the the weights of the layer - indepent of those weights' grad flows.  \n",
    "\n",
    "layer1 = torch.nn.Conv2d(3, 3, 3)\n",
    "layer2 = torch.nn.Linear(10, 100)\n",
    "in1 = torch.rand(10, 3, 10, 10)\n",
    "in2 = torch.rand(10, 10, 10)\n",
    "\n",
    "for layer, input_ in [(layer1, in1), (layer2, in2)]:\n",
    "    \n",
    "    print('-------', layer.__class__.__name__, '--------\\n')\n",
    "    layer.weight.register_hook(w_hook)\n",
    "    layer.bias.register_hook(b_hook)\n",
    "\n",
    "    optim = torch.optim.SGD(layer.parameters(), lr=0.01)\n",
    "    \n",
    "    # Sets all weights and biases to 1.\n",
    "    with torch.no_grad():\n",
    "        layer.weight.data[:] = 1\n",
    "        layer.bias.data[:] = 1\n",
    "\n",
    "    optim.zero_grad()\n",
    "    o = layer(input_)\n",
    "    loss = o.mean()\n",
    "    \n",
    "    print(' '*5, 'Computing grads...')\n",
    "    loss.backward()\n",
    "    optim.step()\n",
    "    \n",
    "    # See if weights and biases are still 1.\n",
    "    # This should only be the case for the weights\n",
    "    # as we zeroed their gradients.\n",
    "    print()\n",
    "    print(' '*5, 'Checking results...')\n",
    "    print(' '*8, 'Optimized weight - All close to 1:', (layer.weight == 1).all())\n",
    "    print(' '*8, 'Optimized Bias - All close to 1:', (layer.bias == 1).all())\n",
    "    print()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Fun with Datasets and Dataloaders."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [],
   "source": [
    "from torchvision import datasets, transforms"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [],
   "source": [
    "import os"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {},
   "outputs": [],
   "source": [
    "data_dir = \"~/nta/datasets\"\n",
    "data_dir = os.path.expanduser(data_dir)\n",
    "if os.path.exists(data_dir):\n",
    "    dataset = getattr(datasets, \"CIFAR10\")(\n",
    "                    root=data_dir, train=True, transform=[transforms.ToTensor()]\n",
    "                )\n",
    "else:\n",
    "    print(\"Couldn't find path {}\".format(data_dir))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "metadata": {},
   "outputs": [],
   "source": [
    "tl = torch.utils.data.DataLoader(\n",
    "    dataset, batch_size=4, shuffle=True\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "metadata": {},
   "outputs": [],
   "source": [
    "class C(torch.nn.Conv2d):\n",
    "    def to(self, device, *args, **kwargs):\n",
    "        print(device, args)\n",
    "        super().to(device, *args, **kwargs)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Fun with iterators"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [],
   "source": [
    "class L(list):\n",
    "    def __iter__(self):\n",
    "        elem = super().__iter__()\n",
    "        print('elem', elem)\n",
    "        return elem"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [],
   "source": [
    "l = L([1, 2, 3])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "elem <list_iterator object at 0x11d864438>\n",
      "1\n",
      "2\n",
      "3\n"
     ]
    }
   ],
   "source": [
    "for l_ in l:\n",
    "    print(l_)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Small Dense GSC nets"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 101,
   "metadata": {},
   "outputs": [],
   "source": [
    "np.set_printoptions(suppress=True)\n",
    "params = np.array([1600, 102400, 1600000, 12000])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 188,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "---- conv_1 -----\n",
      "   new -  25\n",
      "   old -  32.0\n",
      "   abs diff: -7.0\n",
      "   rel diff: -21.875% change\n",
      "\n",
      "---- conv_2 -----\n",
      "   new -  2025\n",
      "   old -  2048.0\n",
      "   abs diff: -23.0\n",
      "   rel diff: -1.123046875% change\n",
      "\n",
      "---- lin1 -----\n",
      "   new -  32400\n",
      "   old -  32000.0\n",
      "   abs diff: 400.0\n",
      "   rel diff: 1.25% change\n",
      "\n",
      "---- lin2 -----\n",
      "   new -  192\n",
      "   old -  240.0\n",
      "   abs diff: -48.0\n",
      "   rel diff: -20.0% change\n",
      "\n",
      "---- Summary ----\n",
      "   total new -  34642\n",
      "   total old -  34320.0\n",
      "   total abs diff: 322.0\n",
      "   total rel diff: 0.9382284382284383% change\n",
      "---- conv_1 -----\n",
      "   new -  50\n",
      "   old -  64.0\n",
      "   abs diff: -14.0\n",
      "   rel diff: -21.875% change\n",
      "\n",
      "---- conv_2 -----\n",
      "   new -  4050\n",
      "   old -  4096.0\n",
      "   abs diff: -46.0\n",
      "   rel diff: -1.123046875% change\n",
      "\n",
      "---- lin1 -----\n",
      "   new -  64800\n",
      "   old -  64000.0\n",
      "   abs diff: 800.0\n",
      "   rel diff: 1.25% change\n",
      "\n",
      "---- lin2 -----\n",
      "   new -  384\n",
      "   old -  480.0\n",
      "   abs diff: -96.0\n",
      "   rel diff: -20.0% change\n",
      "\n",
      "---- Summary ----\n",
      "   total new -  69284\n",
      "   total old -  68640.0\n",
      "   total abs diff: 644.0\n",
      "   total rel diff: 0.9382284382284383% change\n",
      "---- conv_1 -----\n",
      "   new -  75\n",
      "   old -  96.0\n",
      "   abs diff: -21.0\n",
      "   rel diff: -21.875% change\n",
      "\n",
      "---- conv_2 -----\n",
      "   new -  6075\n",
      "   old -  6144.0\n",
      "   abs diff: -69.0\n",
      "   rel diff: -1.123046875% change\n",
      "\n",
      "---- lin1 -----\n",
      "   new -  95175\n",
      "   old -  96000.0\n",
      "   abs diff: -825.0\n",
      "   rel diff: -0.8593750000000001% change\n",
      "\n",
      "---- lin2 -----\n",
      "   new -  564\n",
      "   old -  720.0\n",
      "   abs diff: -156.0\n",
      "   rel diff: -21.666666666666668% change\n",
      "\n",
      "---- Summary ----\n",
      "   total new -  101889\n",
      "   total old -  102960.0\n",
      "   total abs diff: -1071.0\n",
      "   total rel diff: -1.0402097902097902% change\n",
      "---- conv_1 -----\n",
      "   new -  125\n",
      "   old -  128.0\n",
      "   abs diff: -3.0\n",
      "   rel diff: -2.34375% change\n",
      "\n",
      "---- conv_2 -----\n",
      "   new -  8125\n",
      "   old -  8192.0\n",
      "   abs diff: -67.0\n",
      "   rel diff: -0.81787109375% change\n",
      "\n",
      "---- lin1 -----\n",
      "   new -  128375\n",
      "   old -  128000.0\n",
      "   abs diff: 375.0\n",
      "   rel diff: 0.29296875% change\n",
      "\n",
      "---- lin2 -----\n",
      "   new -  948\n",
      "   old -  960.0\n",
      "   abs diff: -12.0\n",
      "   rel diff: -1.25% change\n",
      "\n",
      "---- Summary ----\n",
      "   total new -  137573\n",
      "   total old -  137280.0\n",
      "   total abs diff: 293.0\n",
      "   total rel diff: 0.21343240093240093% change\n",
      "---- conv_1 -----\n",
      "   new -  150\n",
      "   old -  160.0\n",
      "   abs diff: -10.0\n",
      "   rel diff: -6.25% change\n",
      "\n",
      "---- conv_2 -----\n",
      "   new -  10200\n",
      "   old -  10240.0\n",
      "   abs diff: -40.0\n",
      "   rel diff: -0.390625% change\n",
      "\n",
      "---- lin1 -----\n",
      "   new -  159800\n",
      "   old -  160000.0\n",
      "   abs diff: -200.0\n",
      "   rel diff: -0.125% change\n",
      "\n",
      "---- lin2 -----\n",
      "   new -  1128\n",
      "   old -  1200.0\n",
      "   abs diff: -72.0\n",
      "   rel diff: -6.0% change\n",
      "\n",
      "---- Summary ----\n",
      "   total new -  171278\n",
      "   total old -  171600.0\n",
      "   total abs diff: -322.0\n",
      "   total rel diff: -0.18764568764568765% change\n"
     ]
    }
   ],
   "source": [
    "def _get_gsc_small_dense_params(on_perc, verbose=False):\n",
    "    \n",
    "    def vprint(*args):\n",
    "        if verbose:\n",
    "            print(*args)\n",
    "    \n",
    "    # Define number of params in dense GSC.\n",
    "    # TODO: make configurable based off orignal `cnn_out_channels` and `linear_units`\n",
    "    # default_config = dict(\n",
    "    #     cnn_out_channels=(64, 64),\n",
    "    #     linear_units=1000,\n",
    "    # )\n",
    "    large_dense_params = np.array([1600, 102400, 1600000, 12000])\n",
    "    \n",
    "    # Cacluate num params in large sparse GSC.\n",
    "    large_sparse_params = large_dense_params * on_perc\n",
    "    \n",
    "    # Caclculate number of params in small dense.\n",
    "    kernel_adjustment_factor = np.array([25, 25, 1, 1])\n",
    "    small_sparse_params = large_sparse_params / kernel_adjustment_factor\n",
    "    \n",
    "    # Init desired congfig.\n",
    "    cnn_out_channels = np.array([0, 0])\n",
    "    linear_units = None\n",
    "\n",
    "    # Assume 1 channel input to first conv\n",
    "    cnn_out_channels[0] = large_sparse_params[0] / 25\n",
    "    cnn_out_channels[1] = large_sparse_params[1] / (cnn_out_channels[0] * 25)\n",
    "    cnn_out_channels = np.round(cnn_out_channels).astype(np.int)\n",
    "    linear_units = large_sparse_params[2] / (25 * cnn_out_channels[1])\n",
    "    linear_units = int(np.round(linear_units))\n",
    "\n",
    "    # Simulate foward pass for sanity check\n",
    "    conv1 = torch.nn.Conv2d(1, cnn_out_channels[0], 5)\n",
    "    maxp1 = torch.nn.MaxPool2d(2)\n",
    "    conv2 = torch.nn.Conv2d(cnn_out_channels[0], cnn_out_channels[1], 5)\n",
    "    maxp2 = torch.nn.MaxPool2d(2)\n",
    "    flat = torch.nn.Flatten()\n",
    "    lin1 = torch.nn.Linear(25 * cnn_out_channels[1], linear_units)\n",
    "    lin2 = torch.nn.Linear(linear_units, 12)\n",
    "    \n",
    "    x = torch.rand(10, 1, 32, 32)\n",
    "    x = conv1(x)\n",
    "    x = maxp1(x)\n",
    "    x = conv2(x)\n",
    "    x = maxp2(x)\n",
    "    x = flat(x)\n",
    "    x = lin1(x)\n",
    "    x = lin2(x)\n",
    "    \n",
    "    # Calculate number of params.\n",
    "    new_params = {\n",
    "        \"conv_1\": np.prod(conv1.weight.shape),\n",
    "        \"conv_2\": np.prod(conv2.weight.shape),\n",
    "        \"lin1\": np.prod(lin1.weight.shape),\n",
    "        \"lin2\": np.prod(lin2.weight.shape),\n",
    "    }\n",
    "\n",
    "    # Compare with desired.\n",
    "    total_new = 0\n",
    "    total_old = 0\n",
    "    for p_old, (layer, p_new) in zip(large_sparse_params, new_params.items()):\n",
    "        abs_diff = p_new - p_old\n",
    "        rel_diff = abs_diff / float(p_old)\n",
    "        vprint('---- {} -----'.format(layer))\n",
    "        vprint('   new - ', p_new)\n",
    "        vprint('   old - ', p_old)\n",
    "        vprint('   abs diff:', abs_diff)\n",
    "        vprint('   rel diff: {}% change'.format(100 * rel_diff))\n",
    "        vprint()\n",
    "        total_new += p_new\n",
    "        total_old += p_old\n",
    "    \n",
    "    total_abs_diff = total_new - total_old\n",
    "    total_rel_diff = total_abs_diff / float(total_old)\n",
    "    vprint('---- Summary ----')\n",
    "    vprint('   total new - ', total_new)\n",
    "    vprint('   total old - ', total_old)\n",
    "    vprint('   total abs diff:', total_abs_diff)\n",
    "    vprint('   total rel diff: {}% change'.format(100 * total_rel_diff))\n",
    "    \n",
    "    # New config\n",
    "    new_config = dict(\n",
    "        cnn_out_channels=tuple(cnn_out_channels),\n",
    "        linear_units=linear_units,\n",
    "    )\n",
    "    return new_config\n",
    "\n",
    "for perc in [0.02, 0.04, 0.06, 0.08, 0.10]:\n",
    "    c = _get_gsc_small_dense_params(perc, verbose=True)\n",
    "    net = GSCSparseCNN(**c)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 184,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "GSCSparseCNN(\n",
       "  (cnn1): Conv2d(1, 1, kernel_size=(5, 5), stride=(1, 1))\n",
       "  (cnn1_batchnorm): BatchNorm2d(1, eps=1e-05, momentum=0.1, affine=False, track_running_stats=True)\n",
       "  (cnn1_maxpool): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
       "  (cnn1_kwinner): KWinners2d(channels=1, n=0, percent_on=0.095, boost_strength=1.6699999570846558, boost_strength_factor=0.9, k_inference_factor=1.5, duty_cycle_period=1000)\n",
       "  (cnn2): Conv2d(1, 81, kernel_size=(5, 5), stride=(1, 1))\n",
       "  (cnn2_batchnorm): BatchNorm2d(81, eps=1e-05, momentum=0.1, affine=False, track_running_stats=True)\n",
       "  (cnn2_maxpool): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
       "  (cnn2_kwinner): KWinners2d(channels=81, n=0, percent_on=0.125, boost_strength=1.6699999570846558, boost_strength_factor=0.9, k_inference_factor=1.5, duty_cycle_period=1000)\n",
       "  (flatten): Flatten()\n",
       "  (linear): SparseWeights(\n",
       "    weight_sparsity=0.4\n",
       "    (module): Linear(in_features=2025, out_features=16, bias=True)\n",
       "  )\n",
       "  (linear_bn): BatchNorm1d(16, eps=1e-05, momentum=0.1, affine=False, track_running_stats=True)\n",
       "  (linear_kwinner): KWinners(n=16, percent_on=0.1, boost_strength=1.6699999570846558, boost_strength_factor=0.9, k_inference_factor=1.5, duty_cycle_period=1000)\n",
       "  (output): Linear(in_features=16, out_features=12, bias=True)\n",
       "  (softmax): LogSoftmax()\n",
       ")"
      ]
     },
     "execution_count": 184,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "net"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 117,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([   32.,  2048., 32000.,   240.])"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "array([   25,  2050, 32000,   240])"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[-7.  2.  0.  0.]\n",
      "-5.0\n",
      "-0.0001456876456876457\n",
      "\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([   64.,  4096., 64000.,   480.])"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "array([   75,  4100, 64000,   480])"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[11.  4.  0.  0.]\n",
      "15.0\n",
      "0.00021853146853146853\n",
      "\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([   96.,  6144., 96000.,   720.])"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "array([  100,  6150, 96000,   720])"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[4. 6. 0. 0.]\n",
      "10.0\n",
      "9.712509712509713e-05\n",
      "\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([   128.,   8192., 128000.,    960.])"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "array([   125,   8200, 128000,    960])"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[-3.  8.  0.  0.]\n",
      "5.0\n",
      "3.642191142191142e-05\n",
      "\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([   160.,  10240., 160000.,   1200.])"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "array([   150,  10250, 160000,   1200])"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[-10.  10.   0.   0.]\n",
      "0.0\n",
      "0.0\n",
      "\n"
     ]
    }
   ],
   "source": [
    "    \n",
    "for perc in [0.02, 0.04, 0.06, 0.08, 0.10]:\n",
    "    old_params = params * perc\n",
    "    display(old_params) \n",
    "    factor = np.array([25, 25, 1, 1])\n",
    "    new_params = old_params / factor\n",
    "    new_params = np.round(new_params).astype(np.int) * factor\n",
    "    display(new_params)\n",
    "    \n",
    "    diff = new_params - (old_params)\n",
    "    print(diff)\n",
    "    print(np.sum(diff))\n",
    "    print(np.sum(diff) / np.sum(old_params))\n",
    "\n",
    "    \n",
    "    print()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Fun with Resnets"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "ResNet(\n",
       "  (conv1): Conv2d(3, 64, kernel_size=(7, 7), stride=(2, 2), padding=(3, 3), bias=False)\n",
       "  (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "  (relu): ReLU(inplace=True)\n",
       "  (maxpool): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n",
       "  (layer1): Sequential(\n",
       "    (0): Bottleneck(\n",
       "      (conv1): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (conv3): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      (bn3): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu): ReLU(inplace=True)\n",
       "      (downsample): Sequential(\n",
       "        (0): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "    )\n",
       "    (1): Bottleneck(\n",
       "      (conv1): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (conv3): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      (bn3): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu): ReLU(inplace=True)\n",
       "    )\n",
       "    (2): Bottleneck(\n",
       "      (conv1): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (conv3): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      (bn3): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu): ReLU(inplace=True)\n",
       "    )\n",
       "  )\n",
       "  (layer2): Sequential(\n",
       "    (0): Bottleneck(\n",
       "      (conv1): Conv2d(256, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n",
       "      (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      (bn3): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu): ReLU(inplace=True)\n",
       "      (downsample): Sequential(\n",
       "        (0): Conv2d(256, 512, kernel_size=(1, 1), stride=(2, 2), bias=False)\n",
       "        (1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "    )\n",
       "    (1): Bottleneck(\n",
       "      (conv1): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      (bn3): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu): ReLU(inplace=True)\n",
       "    )\n",
       "    (2): Bottleneck(\n",
       "      (conv1): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      (bn3): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu): ReLU(inplace=True)\n",
       "    )\n",
       "    (3): Bottleneck(\n",
       "      (conv1): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      (bn3): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu): ReLU(inplace=True)\n",
       "    )\n",
       "  )\n",
       "  (layer3): Sequential(\n",
       "    (0): Bottleneck(\n",
       "      (conv1): Conv2d(512, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n",
       "      (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu): ReLU(inplace=True)\n",
       "      (downsample): Sequential(\n",
       "        (0): Conv2d(512, 1024, kernel_size=(1, 1), stride=(2, 2), bias=False)\n",
       "        (1): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "    )\n",
       "    (1): Bottleneck(\n",
       "      (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu): ReLU(inplace=True)\n",
       "    )\n",
       "    (2): Bottleneck(\n",
       "      (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu): ReLU(inplace=True)\n",
       "    )\n",
       "    (3): Bottleneck(\n",
       "      (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu): ReLU(inplace=True)\n",
       "    )\n",
       "    (4): Bottleneck(\n",
       "      (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu): ReLU(inplace=True)\n",
       "    )\n",
       "    (5): Bottleneck(\n",
       "      (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu): ReLU(inplace=True)\n",
       "    )\n",
       "  )\n",
       "  (layer4): Sequential(\n",
       "    (0): Bottleneck(\n",
       "      (conv1): Conv2d(1024, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      (bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n",
       "      (bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (conv3): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      (bn3): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu): ReLU(inplace=True)\n",
       "      (downsample): Sequential(\n",
       "        (0): Conv2d(1024, 2048, kernel_size=(1, 1), stride=(2, 2), bias=False)\n",
       "        (1): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "    )\n",
       "    (1): Bottleneck(\n",
       "      (conv1): Conv2d(2048, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      (bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      (bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (conv3): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      (bn3): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu): ReLU(inplace=True)\n",
       "    )\n",
       "    (2): Bottleneck(\n",
       "      (conv1): Conv2d(2048, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      (bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      (bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (conv3): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      (bn3): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu): ReLU(inplace=True)\n",
       "    )\n",
       "  )\n",
       "  (avgpool): AdaptiveAvgPool2d(output_size=(1, 1))\n",
       "  (fc): Linear(in_features=2048, out_features=1000, bias=True)\n",
       ")"
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "resnet50"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Skip to content\n",
    "# Search or jump to…\n",
    "\n",
    "# Pull requests\n",
    "# Issues\n",
    "# Marketplace\n",
    "# Explore\n",
    " \n",
    "# @mvacaporale \n",
    "# Learn Git and GitHub without any code!\n",
    "# Using the Hello World guide, you’ll start a branch, write comments, and open a pull request.\n",
    "\n",
    "\n",
    "# Code Issues 40 Pull requests 14 Projects 0 Wiki Security Pulse Community\n",
    "# DeepLearningExamples/PyTorch/Classification/RN50v1.5/image_classification/resnet.py\n",
    "# @nvpstr nvpstr Updating PyTorch models\n",
    "# 5eaebef on May 27\n",
    "# 272 lines (221 sloc)  8.15 KB\n",
    "  \n",
    "import math\n",
    "import torch\n",
    "import torch.nn as nn\n",
    "import numpy as np\n",
    "\n",
    "__all__ = ['ResNet', 'build_resnet', 'resnet_versions', 'resnet_configs']\n",
    "\n",
    "# ResNetBuilder {{{\n",
    "\n",
    "class ResNetBuilder(object):\n",
    "    def __init__(self, version, config):\n",
    "        self.config = config\n",
    "\n",
    "        self.L = sum(version['layers'])\n",
    "        self.M = version['block'].M\n",
    "\n",
    "    def conv(self, kernel_size, in_planes, out_planes, stride=1):\n",
    "        if kernel_size == 3:\n",
    "            conv = self.config['conv'](\n",
    "                    in_planes, out_planes, kernel_size=3, stride=stride,\n",
    "                    padding=1, bias=False)\n",
    "        elif kernel_size == 1:\n",
    "            conv = nn.Conv2d(in_planes, out_planes, kernel_size=1, stride=stride,\n",
    "                             bias=False)\n",
    "        elif kernel_size == 5:\n",
    "            conv = nn.Conv2d(in_planes, out_planes, kernel_size=5, stride=stride,\n",
    "                             padding=2, bias=False)\n",
    "        elif kernel_size == 7:\n",
    "            conv = nn.Conv2d(in_planes, out_planes, kernel_size=7, stride=stride,\n",
    "                             padding=3, bias=False)\n",
    "        else:\n",
    "            return None\n",
    "\n",
    "        if self.config['nonlinearity'] == 'relu':\n",
    "            nn.init.kaiming_normal_(conv.weight,\n",
    "                    mode=self.config['conv_init'],\n",
    "                    nonlinearity=self.config['nonlinearity'])\n",
    "\n",
    "        return conv\n",
    "\n",
    "    def conv3x3(self, in_planes, out_planes, stride=1):\n",
    "        \"\"\"3x3 convolution with padding\"\"\"\n",
    "        c = self.conv(3, in_planes, out_planes, stride=stride)\n",
    "        return c\n",
    "\n",
    "    def conv1x1(self, in_planes, out_planes, stride=1):\n",
    "        \"\"\"1x1 convolution with padding\"\"\"\n",
    "        c = self.conv(1, in_planes, out_planes, stride=stride)\n",
    "        return c\n",
    "\n",
    "    def conv7x7(self, in_planes, out_planes, stride=1):\n",
    "        \"\"\"7x7 convolution with padding\"\"\"\n",
    "        c = self.conv(7, in_planes, out_planes, stride=stride)\n",
    "        return c\n",
    "\n",
    "    def conv5x5(self, in_planes, out_planes, stride=1):\n",
    "        \"\"\"5x5 convolution with padding\"\"\"\n",
    "        c = self.conv(5, in_planes, out_planes, stride=stride)\n",
    "        return c\n",
    "\n",
    "    def batchnorm(self, planes, last_bn=False):\n",
    "        bn = nn.BatchNorm2d(planes)\n",
    "        gamma_init_val = 0 if last_bn and self.config['last_bn_0_init'] else 1\n",
    "        nn.init.constant_(bn.weight, gamma_init_val)\n",
    "        nn.init.constant_(bn.bias, 0)\n",
    "\n",
    "        return bn\n",
    "\n",
    "    def activation(self):\n",
    "        return self.config['activation']()\n",
    "\n",
    "# ResNetBuilder }}}\n",
    "\n",
    "# BasicBlock {{{\n",
    "class BasicBlock(nn.Module):\n",
    "    M = 2\n",
    "    expansion = 1\n",
    "\n",
    "    def __init__(self, builder, inplanes, planes, stride=1, downsample=None):\n",
    "        super(BasicBlock, self).__init__()\n",
    "        self.conv1 = builder.conv3x3(inplanes, planes, stride)\n",
    "        self.bn1 = builder.batchnorm(planes)\n",
    "        self.relu = builder.activation()\n",
    "        self.conv2 = builder.conv3x3(planes, planes)\n",
    "        self.bn2 = builder.batchnorm(planes, last_bn=True)\n",
    "        self.downsample = downsample\n",
    "        self.stride = stride\n",
    "\n",
    "    def forward(self, x):\n",
    "        residual = x\n",
    "\n",
    "        out = self.conv1(x)\n",
    "        if self.bn1 is not None:\n",
    "            out = self.bn1(out)\n",
    "\n",
    "        out = self.relu(out)\n",
    "\n",
    "        out = self.conv2(out)\n",
    "\n",
    "        if self.bn2 is not None:\n",
    "            out = self.bn2(out)\n",
    "\n",
    "        if self.downsample is not None:\n",
    "            residual = self.downsample(x)\n",
    "\n",
    "        out += residual\n",
    "        out = self.relu(out)\n",
    "\n",
    "        return out\n",
    "# BasicBlock }}}\n",
    "\n",
    "# Bottleneck {{{\n",
    "class Bottleneck(nn.Module):\n",
    "    M = 3\n",
    "    expansion = 4\n",
    "\n",
    "    def __init__(self, builder, inplanes, planes, stride=1, downsample=None):\n",
    "        super(Bottleneck, self).__init__()\n",
    "        self.conv1 = builder.conv1x1(inplanes, planes)\n",
    "        self.bn1 = builder.batchnorm(planes)\n",
    "        self.conv2 = builder.conv3x3(planes, planes, stride=stride)\n",
    "        self.bn2 = builder.batchnorm(planes)\n",
    "        self.conv3 = builder.conv1x1(planes, planes * self.expansion)\n",
    "        self.bn3 = builder.batchnorm(planes * self.expansion, last_bn=True)\n",
    "        self.relu = builder.activation()\n",
    "        self.downsample = downsample\n",
    "        self.stride = stride\n",
    "\n",
    "    def forward(self, x):\n",
    "        residual = x\n",
    "\n",
    "        out = self.conv1(x)\n",
    "        out = self.bn1(out)\n",
    "        out = self.relu(out)\n",
    "\n",
    "        out = self.conv2(out)\n",
    "        out = self.bn2(out)\n",
    "        out = self.relu(out)\n",
    "\n",
    "        out = self.conv3(out)\n",
    "        out = self.bn3(out)\n",
    "\n",
    "        if self.downsample is not None:\n",
    "            residual = self.downsample(x)\n",
    "\n",
    "        out += residual\n",
    "\n",
    "        out = self.relu(out)\n",
    "\n",
    "        return out\n",
    "# Bottleneck }}}\n",
    "\n",
    "# ResNet {{{\n",
    "class ResNet(nn.Module):\n",
    "    def __init__(self, builder, block, layers, num_classes=1000):\n",
    "        self.inplanes = 64\n",
    "        super(ResNet, self).__init__()\n",
    "        self.conv1 = builder.conv7x7(3, 64, stride=2)\n",
    "        self.bn1 = builder.batchnorm(64)\n",
    "        self.relu = builder.activation()\n",
    "        self.maxpool = nn.MaxPool2d(kernel_size=3, stride=2, padding=1)\n",
    "        self.layer1 = self._make_layer(builder, block, 64, layers[0])\n",
    "        self.layer2 = self._make_layer(builder, block, 128, layers[1], stride=2)\n",
    "        self.layer3 = self._make_layer(builder, block, 256, layers[2], stride=2)\n",
    "        self.layer4 = self._make_layer(builder, block, 512, layers[3], stride=2)\n",
    "        self.avgpool = nn.AdaptiveAvgPool2d(1)\n",
    "        self.fc = nn.Linear(512 * block.expansion, num_classes)\n",
    "\n",
    "    def _make_layer(self, builder, block, planes, blocks, stride=1):\n",
    "        downsample = None\n",
    "        if stride != 1 or self.inplanes != planes * block.expansion:\n",
    "            dconv = builder.conv1x1(self.inplanes, planes * block.expansion,\n",
    "                                    stride=stride)\n",
    "            dbn = builder.batchnorm(planes * block.expansion)\n",
    "            if dbn is not None:\n",
    "                downsample = nn.Sequential(dconv, dbn)\n",
    "            else:\n",
    "                downsample = dconv\n",
    "\n",
    "        layers = []\n",
    "        layers.append(block(builder, self.inplanes, planes, stride, downsample))\n",
    "        self.inplanes = planes * block.expansion\n",
    "        for i in range(1, blocks):\n",
    "            layers.append(block(builder, self.inplanes, planes))\n",
    "\n",
    "        return nn.Sequential(*layers)\n",
    "\n",
    "    def forward(self, x):\n",
    "        x = self.conv1(x)\n",
    "        if self.bn1 is not None:\n",
    "            x = self.bn1(x)\n",
    "        x = self.relu(x)\n",
    "        x = self.maxpool(x)\n",
    "\n",
    "        x = self.layer1(x)\n",
    "        x = self.layer2(x)\n",
    "        x = self.layer3(x)\n",
    "        x = self.layer4(x)\n",
    "\n",
    "        x = self.avgpool(x)\n",
    "        x = x.view(x.size(0), -1)\n",
    "        x = self.fc(x)\n",
    "\n",
    "        return x\n",
    "# ResNet }}}\n",
    "\n",
    "\n",
    "resnet_configs = {\n",
    "        'classic' : {\n",
    "            'conv' : nn.Conv2d,\n",
    "            'conv_init' : 'fan_out',\n",
    "            'nonlinearity' : 'relu',\n",
    "            'last_bn_0_init' : False,\n",
    "            'activation' : lambda: nn.ReLU(inplace=True),\n",
    "            },\n",
    "        'fanin' : {\n",
    "            'conv' : nn.Conv2d,\n",
    "            'conv_init' : 'fan_in',\n",
    "            'nonlinearity' : 'relu',\n",
    "            'last_bn_0_init' : False,\n",
    "            'activation' : lambda: nn.ReLU(inplace=True),\n",
    "            },\n",
    "        }\n",
    "\n",
    "resnet_versions = {\n",
    "        'resnet18' : {\n",
    "            'net' : ResNet,\n",
    "            'block' : BasicBlock,\n",
    "            'layers' : [2, 2, 2, 2],\n",
    "            'num_classes' : 1000,\n",
    "            },\n",
    "         'resnet34' : {\n",
    "            'net' : ResNet,\n",
    "            'block' : BasicBlock,\n",
    "            'layers' : [3, 4, 6, 3],\n",
    "            'num_classes' : 1000,\n",
    "            },\n",
    "         'resnet50' : {\n",
    "            'net' : ResNet,\n",
    "            'block' : Bottleneck,\n",
    "            'layers' : [3, 4, 6, 3],\n",
    "            'num_classes' : 1000,\n",
    "            },\n",
    "        'resnet101' : {\n",
    "            'net' : ResNet,\n",
    "            'block' : Bottleneck,\n",
    "            'layers' : [3, 4, 23, 3],\n",
    "            'num_classes' : 1000,\n",
    "            },\n",
    "        'resnet152' : {\n",
    "            'net' : ResNet,\n",
    "            'block' : Bottleneck,\n",
    "            'layers' : [3, 8, 36, 3],\n",
    "            'num_classes' : 1000,\n",
    "            },\n",
    "        }\n",
    "\n",
    "\n",
    "def build_resnet(version, config, model_state=None):\n",
    "    version = resnet_versions[version]\n",
    "    config = resnet_configs[config]\n",
    "\n",
    "    builder = ResNetBuilder(version, config)\n",
    "    print(\"Version: {}\".format(version))\n",
    "    print(\"Config: {}\".format(config))\n",
    "    model = version['net'](builder,\n",
    "                           version['block'],\n",
    "                           version['layers'],\n",
    "                           version['num_classes'])\n",
    "\n",
    "    return model\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "metadata": {
    "collapsed": true,
    "jupyter": {
     "outputs_hidden": true
    }
   },
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
       " -->\n",
       "<!-- Title: %3 Pages: 1 -->\n",
       "<svg width=\"766pt\" height=\"7506pt\"\n",
       " viewBox=\"0.00 0.00 765.82 7506.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(.6856 .6856) rotate(0) translate(4 10944)\">\n",
       "<title>%3</title>\n",
       "<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-10944 1113,-10944 1113,4 -4,4\"/>\n",
       "<!-- 5660023888 -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>5660023888</title>\n",
       "<polygon fill=\"#caff70\" stroke=\"#000000\" points=\"878.9668,-20 781.0332,-20 781.0332,0 878.9668,0 878.9668,-20\"/>\n",
       "<text text-anchor=\"middle\" x=\"830\" y=\"-6.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">MeanBackward0</text>\n",
       "</g>\n",
       "<!-- 5660024784 -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>5660024784</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"881.9785,-76 778.0215,-76 778.0215,-56 881.9785,-56 881.9785,-76\"/>\n",
       "<text text-anchor=\"middle\" x=\"830\" y=\"-62.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">AddmmBackward</text>\n",
       "</g>\n",
       "<!-- 5660024784&#45;&gt;5660023888 -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>5660024784&#45;&gt;5660023888</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M830,-55.9883C830,-48.9098 830,-39.1714 830,-30.4779\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"833.5001,-30.3038 830,-20.3039 826.5001,-30.3039 833.5001,-30.3038\"/>\n",
       "</g>\n",
       "<!-- 5660122080 -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>5660122080</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"767,-146 713,-146 713,-112 767,-112 767,-146\"/>\n",
       "<text text-anchor=\"middle\" x=\"740\" y=\"-118.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (1000)</text>\n",
       "</g>\n",
       "<!-- 5660122080&#45;&gt;5660024784 -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>5660122080&#45;&gt;5660024784</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M764.5929,-111.785C777.871,-102.4903 794.1566,-91.0904 807.1556,-81.9911\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"809.3672,-84.7153 815.5524,-76.1133 805.353,-78.9806 809.3672,-84.7153\"/>\n",
       "</g>\n",
       "<!-- 5660023664 -->\n",
       "<g id=\"node4\" class=\"node\">\n",
       "<title>5660023664</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"874.9219,-139 785.0781,-139 785.0781,-119 874.9219,-119 874.9219,-139\"/>\n",
       "<text text-anchor=\"middle\" x=\"830\" y=\"-125.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ViewBackward</text>\n",
       "</g>\n",
       "<!-- 5660023664&#45;&gt;5660024784 -->\n",
       "<g id=\"edge3\" class=\"edge\">\n",
       "<title>5660023664&#45;&gt;5660024784</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M830,-118.878C830,-110.2041 830,-97.4355 830,-86.6186\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"833.5001,-86.3062 830,-76.3062 826.5001,-86.3062 833.5001,-86.3062\"/>\n",
       "</g>\n",
       "<!-- 5660022264 -->\n",
       "<g id=\"node5\" class=\"node\">\n",
       "<title>5660022264</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"873.9219,-209 784.0781,-209 784.0781,-189 873.9219,-189 873.9219,-209\"/>\n",
       "<text text-anchor=\"middle\" x=\"829\" y=\"-195.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ViewBackward</text>\n",
       "</g>\n",
       "<!-- 5660022264&#45;&gt;5660023664 -->\n",
       "<g id=\"edge4\" class=\"edge\">\n",
       "<title>5660022264&#45;&gt;5660023664</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M829.1433,-188.9707C829.2903,-178.6786 829.5232,-162.3754 829.7091,-149.3639\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"833.2137,-149.0597 829.857,-139.0107 826.2144,-148.9596 833.2137,-149.0597\"/>\n",
       "</g>\n",
       "<!-- 5660021536 -->\n",
       "<g id=\"node6\" class=\"node\">\n",
       "<title>5660021536</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"877.9668,-272 780.0332,-272 780.0332,-252 877.9668,-252 877.9668,-272\"/>\n",
       "<text text-anchor=\"middle\" x=\"829\" y=\"-258.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">MeanBackward1</text>\n",
       "</g>\n",
       "<!-- 5660021536&#45;&gt;5660022264 -->\n",
       "<g id=\"edge5\" class=\"edge\">\n",
       "<title>5660021536&#45;&gt;5660022264</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M829,-251.878C829,-243.2041 829,-230.4355 829,-219.6186\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"832.5001,-219.3062 829,-209.3062 825.5001,-219.3062 832.5001,-219.3062\"/>\n",
       "</g>\n",
       "<!-- 5660021424 -->\n",
       "<g id=\"node7\" class=\"node\">\n",
       "<title>5660021424</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"873.9219,-328 784.0781,-328 784.0781,-308 873.9219,-308 873.9219,-328\"/>\n",
       "<text text-anchor=\"middle\" x=\"829\" y=\"-314.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ViewBackward</text>\n",
       "</g>\n",
       "<!-- 5660021424&#45;&gt;5660021536 -->\n",
       "<g id=\"edge6\" class=\"edge\">\n",
       "<title>5660021424&#45;&gt;5660021536</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M829,-307.9883C829,-300.9098 829,-291.1714 829,-282.4779\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"832.5001,-282.3038 829,-272.3039 825.5001,-282.3039 832.5001,-282.3038\"/>\n",
       "</g>\n",
       "<!-- 5660021144 -->\n",
       "<g id=\"node8\" class=\"node\">\n",
       "<title>5660021144</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"875.8091,-384 782.1909,-384 782.1909,-364 875.8091,-364 875.8091,-384\"/>\n",
       "<text text-anchor=\"middle\" x=\"829\" y=\"-370.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ReluBackward1</text>\n",
       "</g>\n",
       "<!-- 5660021144&#45;&gt;5660021424 -->\n",
       "<g id=\"edge7\" class=\"edge\">\n",
       "<title>5660021144&#45;&gt;5660021424</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M829,-363.9883C829,-356.9098 829,-347.1714 829,-338.4779\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"832.5001,-338.3038 829,-328.3039 825.5001,-338.3039 832.5001,-338.3038\"/>\n",
       "</g>\n",
       "<!-- 5036560456 -->\n",
       "<g id=\"node9\" class=\"node\">\n",
       "<title>5036560456</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"874.8111,-440 783.1889,-440 783.1889,-420 874.8111,-420 874.8111,-440\"/>\n",
       "<text text-anchor=\"middle\" x=\"829\" y=\"-426.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">AddBackward0</text>\n",
       "</g>\n",
       "<!-- 5036560456&#45;&gt;5660021144 -->\n",
       "<g id=\"edge8\" class=\"edge\">\n",
       "<title>5036560456&#45;&gt;5660021144</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M829,-419.9883C829,-412.9098 829,-403.1714 829,-394.4779\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"832.5001,-394.3038 829,-384.3039 825.5001,-394.3039 832.5001,-394.3038\"/>\n",
       "</g>\n",
       "<!-- 4900957208 -->\n",
       "<g id=\"node10\" class=\"node\">\n",
       "<title>4900957208</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"1023.1177,-496 870.8823,-496 870.8823,-476 1023.1177,-476 1023.1177,-496\"/>\n",
       "<text text-anchor=\"middle\" x=\"947\" y=\"-482.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">NativeBatchNormBackward</text>\n",
       "</g>\n",
       "<!-- 4900957208&#45;&gt;5036560456 -->\n",
       "<g id=\"edge9\" class=\"edge\">\n",
       "<title>4900957208&#45;&gt;5036560456</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M925.904,-475.9883C907.3932,-467.2036 880.2503,-454.3222 859.3965,-444.4255\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"860.8461,-441.2393 850.3112,-440.1138 857.8449,-447.5633 860.8461,-441.2393\"/>\n",
       "</g>\n",
       "<!-- 5741732080 -->\n",
       "<g id=\"node11\" class=\"node\">\n",
       "<title>5741732080</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"965.1547,-559 802.8453,-559 802.8453,-539 965.1547,-539 965.1547,-559\"/>\n",
       "<text text-anchor=\"middle\" x=\"884\" y=\"-545.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">MkldnnConvolutionBackward</text>\n",
       "</g>\n",
       "<!-- 5741732080&#45;&gt;4900957208 -->\n",
       "<g id=\"edge10\" class=\"edge\">\n",
       "<title>5741732080&#45;&gt;4900957208</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M894.122,-538.878C903.6177,-529.3823 918.0206,-514.9794 929.398,-503.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"932.0976,-505.8522 936.6938,-496.3062 927.1478,-500.9024 932.0976,-505.8522\"/>\n",
       "</g>\n",
       "<!-- 5741732472 -->\n",
       "<g id=\"node12\" class=\"node\">\n",
       "<title>5741732472</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"930.8091,-629 837.1909,-629 837.1909,-609 930.8091,-609 930.8091,-629\"/>\n",
       "<text text-anchor=\"middle\" x=\"884\" y=\"-615.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ReluBackward1</text>\n",
       "</g>\n",
       "<!-- 5741732472&#45;&gt;5741732080 -->\n",
       "<g id=\"edge11\" class=\"edge\">\n",
       "<title>5741732472&#45;&gt;5741732080</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M884,-608.9707C884,-598.6786 884,-582.3754 884,-569.3639\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"887.5001,-569.0107 884,-559.0107 880.5001,-569.0107 887.5001,-569.0107\"/>\n",
       "</g>\n",
       "<!-- 5741732752 -->\n",
       "<g id=\"node13\" class=\"node\">\n",
       "<title>5741732752</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"1023.1177,-692 870.8823,-692 870.8823,-672 1023.1177,-672 1023.1177,-692\"/>\n",
       "<text text-anchor=\"middle\" x=\"947\" y=\"-678.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">NativeBatchNormBackward</text>\n",
       "</g>\n",
       "<!-- 5741732752&#45;&gt;5741732472 -->\n",
       "<g id=\"edge12\" class=\"edge\">\n",
       "<title>5741732752&#45;&gt;5741732472</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M936.878,-671.878C927.3823,-662.3823 912.9794,-647.9794 901.602,-636.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"903.8522,-633.9024 894.3062,-629.3062 898.9024,-638.8522 903.8522,-633.9024\"/>\n",
       "</g>\n",
       "<!-- 5741733200 -->\n",
       "<g id=\"node14\" class=\"node\">\n",
       "<title>5741733200</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"965.1547,-755 802.8453,-755 802.8453,-735 965.1547,-735 965.1547,-755\"/>\n",
       "<text text-anchor=\"middle\" x=\"884\" y=\"-741.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">MkldnnConvolutionBackward</text>\n",
       "</g>\n",
       "<!-- 5741733200&#45;&gt;5741732752 -->\n",
       "<g id=\"edge13\" class=\"edge\">\n",
       "<title>5741733200&#45;&gt;5741732752</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M894.122,-734.878C903.6177,-725.3823 918.0206,-710.9794 929.398,-699.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"932.0976,-701.8522 936.6938,-692.3062 927.1478,-696.9024 932.0976,-701.8522\"/>\n",
       "</g>\n",
       "<!-- 5741733480 -->\n",
       "<g id=\"node15\" class=\"node\">\n",
       "<title>5741733480</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"930.8091,-825 837.1909,-825 837.1909,-805 930.8091,-805 930.8091,-825\"/>\n",
       "<text text-anchor=\"middle\" x=\"884\" y=\"-811.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ReluBackward1</text>\n",
       "</g>\n",
       "<!-- 5741733480&#45;&gt;5741733200 -->\n",
       "<g id=\"edge14\" class=\"edge\">\n",
       "<title>5741733480&#45;&gt;5741733200</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M884,-804.9707C884,-794.6786 884,-778.3754 884,-765.3639\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"887.5001,-765.0107 884,-755.0107 880.5001,-765.0107 887.5001,-765.0107\"/>\n",
       "</g>\n",
       "<!-- 5741733928 -->\n",
       "<g id=\"node16\" class=\"node\">\n",
       "<title>5741733928</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"1023.1177,-888 870.8823,-888 870.8823,-868 1023.1177,-868 1023.1177,-888\"/>\n",
       "<text text-anchor=\"middle\" x=\"947\" y=\"-874.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">NativeBatchNormBackward</text>\n",
       "</g>\n",
       "<!-- 5741733928&#45;&gt;5741733480 -->\n",
       "<g id=\"edge15\" class=\"edge\">\n",
       "<title>5741733928&#45;&gt;5741733480</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M936.878,-867.878C927.3823,-858.3823 912.9794,-843.9794 901.602,-832.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"903.8522,-829.9024 894.3062,-825.3062 898.9024,-834.8522 903.8522,-829.9024\"/>\n",
       "</g>\n",
       "<!-- 5741734320 -->\n",
       "<g id=\"node17\" class=\"node\">\n",
       "<title>5741734320</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"965.1547,-951 802.8453,-951 802.8453,-931 965.1547,-931 965.1547,-951\"/>\n",
       "<text text-anchor=\"middle\" x=\"884\" y=\"-937.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">MkldnnConvolutionBackward</text>\n",
       "</g>\n",
       "<!-- 5741734320&#45;&gt;5741733928 -->\n",
       "<g id=\"edge16\" class=\"edge\">\n",
       "<title>5741734320&#45;&gt;5741733928</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M894.122,-930.878C903.6177,-921.3823 918.0206,-906.9794 929.398,-895.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"932.0976,-897.8522 936.6938,-888.3062 927.1478,-892.9024 932.0976,-897.8522\"/>\n",
       "</g>\n",
       "<!-- 4900956872 -->\n",
       "<g id=\"node18\" class=\"node\">\n",
       "<title>4900956872</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"821.8091,-1021 728.1909,-1021 728.1909,-1001 821.8091,-1001 821.8091,-1021\"/>\n",
       "<text text-anchor=\"middle\" x=\"775\" y=\"-1007.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ReluBackward1</text>\n",
       "</g>\n",
       "<!-- 4900956872&#45;&gt;5036560456 -->\n",
       "<g id=\"edge353\" class=\"edge\">\n",
       "<title>4900956872&#45;&gt;5036560456</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M775,-1000.9894C775,-978.829 775,-923.9497 775,-878 775,-878 775,-878 775,-549 775,-510.5157 798.709,-470.7842 814.7072,-448.355\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"817.6667,-450.2395 820.7986,-440.1181 812.0385,-446.0773 817.6667,-450.2395\"/>\n",
       "</g>\n",
       "<!-- 4900956872&#45;&gt;5741734320 -->\n",
       "<g id=\"edge17\" class=\"edge\">\n",
       "<title>4900956872&#45;&gt;5741734320</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M790.617,-1000.9707C808.7478,-989.3271 838.8582,-969.9902 859.9741,-956.4295\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"861.8889,-959.3594 868.4119,-951.0107 858.1063,-953.4694 861.8889,-959.3594\"/>\n",
       "</g>\n",
       "<!-- 5741734768 -->\n",
       "<g id=\"node19\" class=\"node\">\n",
       "<title>5741734768</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"820.8111,-1084 729.1889,-1084 729.1889,-1064 820.8111,-1064 820.8111,-1084\"/>\n",
       "<text text-anchor=\"middle\" x=\"775\" y=\"-1070.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">AddBackward0</text>\n",
       "</g>\n",
       "<!-- 5741734768&#45;&gt;4900956872 -->\n",
       "<g id=\"edge18\" class=\"edge\">\n",
       "<title>5741734768&#45;&gt;4900956872</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M775,-1063.878C775,-1055.2041 775,-1042.4355 775,-1031.6186\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"778.5001,-1031.3062 775,-1021.3062 771.5001,-1031.3062 778.5001,-1031.3062\"/>\n",
       "</g>\n",
       "<!-- 5741735160 -->\n",
       "<g id=\"node20\" class=\"node\">\n",
       "<title>5741735160</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"969.1177,-1140 816.8823,-1140 816.8823,-1120 969.1177,-1120 969.1177,-1140\"/>\n",
       "<text text-anchor=\"middle\" x=\"893\" y=\"-1126.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">NativeBatchNormBackward</text>\n",
       "</g>\n",
       "<!-- 5741735160&#45;&gt;5741734768 -->\n",
       "<g id=\"edge19\" class=\"edge\">\n",
       "<title>5741735160&#45;&gt;5741734768</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M871.904,-1119.9883C853.3932,-1111.2036 826.2503,-1098.3222 805.3965,-1088.4255\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"806.8461,-1085.2393 796.3112,-1084.1138 803.8449,-1091.5633 806.8461,-1085.2393\"/>\n",
       "</g>\n",
       "<!-- 5741735664 -->\n",
       "<g id=\"node21\" class=\"node\">\n",
       "<title>5741735664</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"911.1547,-1203 748.8453,-1203 748.8453,-1183 911.1547,-1183 911.1547,-1203\"/>\n",
       "<text text-anchor=\"middle\" x=\"830\" y=\"-1189.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">MkldnnConvolutionBackward</text>\n",
       "</g>\n",
       "<!-- 5741735664&#45;&gt;5741735160 -->\n",
       "<g id=\"edge20\" class=\"edge\">\n",
       "<title>5741735664&#45;&gt;5741735160</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M840.122,-1182.878C849.6177,-1173.3823 864.0206,-1158.9794 875.398,-1147.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"878.0976,-1149.8522 882.6938,-1140.3062 873.1478,-1144.9024 878.0976,-1149.8522\"/>\n",
       "</g>\n",
       "<!-- 5741735888 -->\n",
       "<g id=\"node22\" class=\"node\">\n",
       "<title>5741735888</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"876.8091,-1273 783.1909,-1273 783.1909,-1253 876.8091,-1253 876.8091,-1273\"/>\n",
       "<text text-anchor=\"middle\" x=\"830\" y=\"-1259.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ReluBackward1</text>\n",
       "</g>\n",
       "<!-- 5741735888&#45;&gt;5741735664 -->\n",
       "<g id=\"edge21\" class=\"edge\">\n",
       "<title>5741735888&#45;&gt;5741735664</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M830,-1252.9707C830,-1242.6786 830,-1226.3754 830,-1213.3639\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"833.5001,-1213.0107 830,-1203.0107 826.5001,-1213.0107 833.5001,-1213.0107\"/>\n",
       "</g>\n",
       "<!-- 5741740440 -->\n",
       "<g id=\"node23\" class=\"node\">\n",
       "<title>5741740440</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"969.1177,-1336 816.8823,-1336 816.8823,-1316 969.1177,-1316 969.1177,-1336\"/>\n",
       "<text text-anchor=\"middle\" x=\"893\" y=\"-1322.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">NativeBatchNormBackward</text>\n",
       "</g>\n",
       "<!-- 5741740440&#45;&gt;5741735888 -->\n",
       "<g id=\"edge22\" class=\"edge\">\n",
       "<title>5741740440&#45;&gt;5741735888</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M882.878,-1315.878C873.3823,-1306.3823 858.9794,-1291.9794 847.602,-1280.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"849.8522,-1277.9024 840.3062,-1273.3062 844.9024,-1282.8522 849.8522,-1277.9024\"/>\n",
       "</g>\n",
       "<!-- 5741740944 -->\n",
       "<g id=\"node24\" class=\"node\">\n",
       "<title>5741740944</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"911.1547,-1399 748.8453,-1399 748.8453,-1379 911.1547,-1379 911.1547,-1399\"/>\n",
       "<text text-anchor=\"middle\" x=\"830\" y=\"-1385.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">MkldnnConvolutionBackward</text>\n",
       "</g>\n",
       "<!-- 5741740944&#45;&gt;5741740440 -->\n",
       "<g id=\"edge23\" class=\"edge\">\n",
       "<title>5741740944&#45;&gt;5741740440</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M840.122,-1378.878C849.6177,-1369.3823 864.0206,-1354.9794 875.398,-1343.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"878.0976,-1345.8522 882.6938,-1336.3062 873.1478,-1340.9024 878.0976,-1345.8522\"/>\n",
       "</g>\n",
       "<!-- 5741740720 -->\n",
       "<g id=\"node25\" class=\"node\">\n",
       "<title>5741740720</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"876.8091,-1469 783.1909,-1469 783.1909,-1449 876.8091,-1449 876.8091,-1469\"/>\n",
       "<text text-anchor=\"middle\" x=\"830\" y=\"-1455.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ReluBackward1</text>\n",
       "</g>\n",
       "<!-- 5741740720&#45;&gt;5741740944 -->\n",
       "<g id=\"edge24\" class=\"edge\">\n",
       "<title>5741740720&#45;&gt;5741740944</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M830,-1448.9707C830,-1438.6786 830,-1422.3754 830,-1409.3639\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"833.5001,-1409.0107 830,-1399.0107 826.5001,-1409.0107 833.5001,-1409.0107\"/>\n",
       "</g>\n",
       "<!-- 5741741560 -->\n",
       "<g id=\"node26\" class=\"node\">\n",
       "<title>5741741560</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"969.1177,-1532 816.8823,-1532 816.8823,-1512 969.1177,-1512 969.1177,-1532\"/>\n",
       "<text text-anchor=\"middle\" x=\"893\" y=\"-1518.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">NativeBatchNormBackward</text>\n",
       "</g>\n",
       "<!-- 5741741560&#45;&gt;5741740720 -->\n",
       "<g id=\"edge25\" class=\"edge\">\n",
       "<title>5741741560&#45;&gt;5741740720</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M882.878,-1511.878C873.3823,-1502.3823 858.9794,-1487.9794 847.602,-1476.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"849.8522,-1473.9024 840.3062,-1469.3062 844.9024,-1478.8522 849.8522,-1473.9024\"/>\n",
       "</g>\n",
       "<!-- 5741741840 -->\n",
       "<g id=\"node27\" class=\"node\">\n",
       "<title>5741741840</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"911.1547,-1595 748.8453,-1595 748.8453,-1575 911.1547,-1575 911.1547,-1595\"/>\n",
       "<text text-anchor=\"middle\" x=\"830\" y=\"-1581.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">MkldnnConvolutionBackward</text>\n",
       "</g>\n",
       "<!-- 5741741840&#45;&gt;5741741560 -->\n",
       "<g id=\"edge26\" class=\"edge\">\n",
       "<title>5741741840&#45;&gt;5741741560</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M840.122,-1574.878C849.6177,-1565.3823 864.0206,-1550.9794 875.398,-1539.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"878.0976,-1541.8522 882.6938,-1532.3062 873.1478,-1536.9024 878.0976,-1541.8522\"/>\n",
       "</g>\n",
       "<!-- 5741735272 -->\n",
       "<g id=\"node28\" class=\"node\">\n",
       "<title>5741735272</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"767.8091,-1665 674.1909,-1665 674.1909,-1645 767.8091,-1645 767.8091,-1665\"/>\n",
       "<text text-anchor=\"middle\" x=\"721\" y=\"-1651.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ReluBackward1</text>\n",
       "</g>\n",
       "<!-- 5741735272&#45;&gt;5741734768 -->\n",
       "<g id=\"edge343\" class=\"edge\">\n",
       "<title>5741735272&#45;&gt;5741734768</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M721,-1644.9894C721,-1622.829 721,-1567.9497 721,-1522 721,-1522 721,-1522 721,-1193 721,-1154.5157 744.709,-1114.7842 760.7072,-1092.355\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"763.6667,-1094.2395 766.7986,-1084.1181 758.0385,-1090.0773 763.6667,-1094.2395\"/>\n",
       "</g>\n",
       "<!-- 5741735272&#45;&gt;5741741840 -->\n",
       "<g id=\"edge27\" class=\"edge\">\n",
       "<title>5741735272&#45;&gt;5741741840</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M736.617,-1644.9707C754.7478,-1633.3271 784.8582,-1613.9902 805.9741,-1600.4295\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"807.8889,-1603.3594 814.4119,-1595.0107 804.1063,-1597.4694 807.8889,-1603.3594\"/>\n",
       "</g>\n",
       "<!-- 5741743072 -->\n",
       "<g id=\"node29\" class=\"node\">\n",
       "<title>5741743072</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"766.8111,-1728 675.1889,-1728 675.1889,-1708 766.8111,-1708 766.8111,-1728\"/>\n",
       "<text text-anchor=\"middle\" x=\"721\" y=\"-1714.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">AddBackward0</text>\n",
       "</g>\n",
       "<!-- 5741743072&#45;&gt;5741735272 -->\n",
       "<g id=\"edge28\" class=\"edge\">\n",
       "<title>5741743072&#45;&gt;5741735272</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M721,-1707.878C721,-1699.2041 721,-1686.4355 721,-1675.6186\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"724.5001,-1675.3062 721,-1665.3062 717.5001,-1675.3062 724.5001,-1675.3062\"/>\n",
       "</g>\n",
       "<!-- 5741743520 -->\n",
       "<g id=\"node30\" class=\"node\">\n",
       "<title>5741743520</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"915.1177,-1784 762.8823,-1784 762.8823,-1764 915.1177,-1764 915.1177,-1784\"/>\n",
       "<text text-anchor=\"middle\" x=\"839\" y=\"-1770.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">NativeBatchNormBackward</text>\n",
       "</g>\n",
       "<!-- 5741743520&#45;&gt;5741743072 -->\n",
       "<g id=\"edge29\" class=\"edge\">\n",
       "<title>5741743520&#45;&gt;5741743072</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M817.904,-1763.9883C799.3932,-1755.2036 772.2503,-1742.3222 751.3965,-1732.4255\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"752.8461,-1729.2393 742.3112,-1728.1138 749.8449,-1735.5633 752.8461,-1729.2393\"/>\n",
       "</g>\n",
       "<!-- 5741743352 -->\n",
       "<g id=\"node31\" class=\"node\">\n",
       "<title>5741743352</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"857.1547,-1847 694.8453,-1847 694.8453,-1827 857.1547,-1827 857.1547,-1847\"/>\n",
       "<text text-anchor=\"middle\" x=\"776\" y=\"-1833.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">MkldnnConvolutionBackward</text>\n",
       "</g>\n",
       "<!-- 5741743352&#45;&gt;5741743520 -->\n",
       "<g id=\"edge30\" class=\"edge\">\n",
       "<title>5741743352&#45;&gt;5741743520</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M786.122,-1826.878C795.6177,-1817.3823 810.0206,-1802.9794 821.398,-1791.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"824.0976,-1793.8522 828.6938,-1784.3062 819.1478,-1788.9024 824.0976,-1793.8522\"/>\n",
       "</g>\n",
       "<!-- 5741744024 -->\n",
       "<g id=\"node32\" class=\"node\">\n",
       "<title>5741744024</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"822.8091,-1917 729.1909,-1917 729.1909,-1897 822.8091,-1897 822.8091,-1917\"/>\n",
       "<text text-anchor=\"middle\" x=\"776\" y=\"-1903.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ReluBackward1</text>\n",
       "</g>\n",
       "<!-- 5741744024&#45;&gt;5741743352 -->\n",
       "<g id=\"edge31\" class=\"edge\">\n",
       "<title>5741744024&#45;&gt;5741743352</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M776,-1896.9707C776,-1886.6786 776,-1870.3754 776,-1857.3639\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"779.5001,-1857.0107 776,-1847.0107 772.5001,-1857.0107 779.5001,-1857.0107\"/>\n",
       "</g>\n",
       "<!-- 5741748576 -->\n",
       "<g id=\"node33\" class=\"node\">\n",
       "<title>5741748576</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"949.1177,-1980 796.8823,-1980 796.8823,-1960 949.1177,-1960 949.1177,-1980\"/>\n",
       "<text text-anchor=\"middle\" x=\"873\" y=\"-1966.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">NativeBatchNormBackward</text>\n",
       "</g>\n",
       "<!-- 5741748576&#45;&gt;5741744024 -->\n",
       "<g id=\"edge32\" class=\"edge\">\n",
       "<title>5741748576&#45;&gt;5741744024</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M857.4153,-1959.878C842.0009,-1949.8666 818.1878,-1934.4003 800.2903,-1922.7762\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"801.8389,-1919.6086 791.5461,-1917.0969 798.0261,-1925.4791 801.8389,-1919.6086\"/>\n",
       "</g>\n",
       "<!-- 5741749024 -->\n",
       "<g id=\"node34\" class=\"node\">\n",
       "<title>5741749024</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"891.1547,-2043 728.8453,-2043 728.8453,-2023 891.1547,-2023 891.1547,-2043\"/>\n",
       "<text text-anchor=\"middle\" x=\"810\" y=\"-2029.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">MkldnnConvolutionBackward</text>\n",
       "</g>\n",
       "<!-- 5741749024&#45;&gt;5741748576 -->\n",
       "<g id=\"edge33\" class=\"edge\">\n",
       "<title>5741749024&#45;&gt;5741748576</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M820.122,-2022.878C829.6177,-2013.3823 844.0206,-1998.9794 855.398,-1987.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"858.0976,-1989.8522 862.6938,-1980.3062 853.1478,-1984.9024 858.0976,-1989.8522\"/>\n",
       "</g>\n",
       "<!-- 5741749304 -->\n",
       "<g id=\"node35\" class=\"node\">\n",
       "<title>5741749304</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"856.8091,-2113 763.1909,-2113 763.1909,-2093 856.8091,-2093 856.8091,-2113\"/>\n",
       "<text text-anchor=\"middle\" x=\"810\" y=\"-2099.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ReluBackward1</text>\n",
       "</g>\n",
       "<!-- 5741749304&#45;&gt;5741749024 -->\n",
       "<g id=\"edge34\" class=\"edge\">\n",
       "<title>5741749304&#45;&gt;5741749024</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M810,-2092.9707C810,-2082.6786 810,-2066.3754 810,-2053.3639\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"813.5001,-2053.0107 810,-2043.0107 806.5001,-2053.0107 813.5001,-2053.0107\"/>\n",
       "</g>\n",
       "<!-- 5741749136 -->\n",
       "<g id=\"node36\" class=\"node\">\n",
       "<title>5741749136</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"983.1177,-2176 830.8823,-2176 830.8823,-2156 983.1177,-2156 983.1177,-2176\"/>\n",
       "<text text-anchor=\"middle\" x=\"907\" y=\"-2162.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">NativeBatchNormBackward</text>\n",
       "</g>\n",
       "<!-- 5741749136&#45;&gt;5741749304 -->\n",
       "<g id=\"edge35\" class=\"edge\">\n",
       "<title>5741749136&#45;&gt;5741749304</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M891.4153,-2155.878C876.0009,-2145.8666 852.1878,-2130.4003 834.2903,-2118.7762\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"835.8389,-2115.6086 825.5461,-2113.0969 832.0261,-2121.4791 835.8389,-2115.6086\"/>\n",
       "</g>\n",
       "<!-- 5741750032 -->\n",
       "<g id=\"node37\" class=\"node\">\n",
       "<title>5741750032</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"925.1547,-2239 762.8453,-2239 762.8453,-2219 925.1547,-2219 925.1547,-2239\"/>\n",
       "<text text-anchor=\"middle\" x=\"844\" y=\"-2225.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">MkldnnConvolutionBackward</text>\n",
       "</g>\n",
       "<!-- 5741750032&#45;&gt;5741749136 -->\n",
       "<g id=\"edge36\" class=\"edge\">\n",
       "<title>5741750032&#45;&gt;5741749136</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M854.122,-2218.878C863.6177,-2209.3823 878.0206,-2194.9794 889.398,-2183.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"892.0976,-2185.8522 896.6938,-2176.3062 887.1478,-2180.9024 892.0976,-2185.8522\"/>\n",
       "</g>\n",
       "<!-- 5741749808 -->\n",
       "<g id=\"node38\" class=\"node\">\n",
       "<title>5741749808</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"801.8091,-2309 708.1909,-2309 708.1909,-2289 801.8091,-2289 801.8091,-2309\"/>\n",
       "<text text-anchor=\"middle\" x=\"755\" y=\"-2295.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ReluBackward1</text>\n",
       "</g>\n",
       "<!-- 5741749808&#45;&gt;5741750032 -->\n",
       "<g id=\"edge37\" class=\"edge\">\n",
       "<title>5741749808&#45;&gt;5741750032</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M767.7515,-2288.9707C782.159,-2277.639 805.831,-2259.0205 822.9816,-2245.5314\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"825.5757,-2247.9439 831.2721,-2239.0107 821.2482,-2242.4418 825.5757,-2247.9439\"/>\n",
       "</g>\n",
       "<!-- 5741743912 -->\n",
       "<g id=\"node317\" class=\"node\">\n",
       "<title>5741743912</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"744.1547,-2239 581.8453,-2239 581.8453,-2219 744.1547,-2219 744.1547,-2239\"/>\n",
       "<text text-anchor=\"middle\" x=\"663\" y=\"-2225.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">MkldnnConvolutionBackward</text>\n",
       "</g>\n",
       "<!-- 5741749808&#45;&gt;5741743912 -->\n",
       "<g id=\"edge330\" class=\"edge\">\n",
       "<title>5741749808&#45;&gt;5741743912</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M741.8186,-2288.9707C726.7889,-2277.535 702.0058,-2258.6783 684.2407,-2245.1614\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"686.2346,-2242.2805 676.1569,-2239.0107 681.9959,-2247.8514 686.2346,-2242.2805\"/>\n",
       "</g>\n",
       "<!-- 5741750648 -->\n",
       "<g id=\"node39\" class=\"node\">\n",
       "<title>5741750648</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"800.8111,-2372 709.1889,-2372 709.1889,-2352 800.8111,-2352 800.8111,-2372\"/>\n",
       "<text text-anchor=\"middle\" x=\"755\" y=\"-2358.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">AddBackward0</text>\n",
       "</g>\n",
       "<!-- 5741750648&#45;&gt;5741749808 -->\n",
       "<g id=\"edge38\" class=\"edge\">\n",
       "<title>5741750648&#45;&gt;5741749808</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M755,-2351.878C755,-2343.2041 755,-2330.4355 755,-2319.6186\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"758.5001,-2319.3062 755,-2309.3062 751.5001,-2319.3062 758.5001,-2319.3062\"/>\n",
       "</g>\n",
       "<!-- 5741750928 -->\n",
       "<g id=\"node40\" class=\"node\">\n",
       "<title>5741750928</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"949.1177,-2428 796.8823,-2428 796.8823,-2408 949.1177,-2408 949.1177,-2428\"/>\n",
       "<text text-anchor=\"middle\" x=\"873\" y=\"-2414.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">NativeBatchNormBackward</text>\n",
       "</g>\n",
       "<!-- 5741750928&#45;&gt;5741750648 -->\n",
       "<g id=\"edge39\" class=\"edge\">\n",
       "<title>5741750928&#45;&gt;5741750648</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M851.904,-2407.9883C833.3932,-2399.2036 806.2503,-2386.3222 785.3965,-2376.4255\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"786.8461,-2373.2393 776.3112,-2372.1138 783.8449,-2379.5633 786.8461,-2373.2393\"/>\n",
       "</g>\n",
       "<!-- 5741751320 -->\n",
       "<g id=\"node41\" class=\"node\">\n",
       "<title>5741751320</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"891.1547,-2491 728.8453,-2491 728.8453,-2471 891.1547,-2471 891.1547,-2491\"/>\n",
       "<text text-anchor=\"middle\" x=\"810\" y=\"-2477.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">MkldnnConvolutionBackward</text>\n",
       "</g>\n",
       "<!-- 5741751320&#45;&gt;5741750928 -->\n",
       "<g id=\"edge40\" class=\"edge\">\n",
       "<title>5741751320&#45;&gt;5741750928</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M820.122,-2470.878C829.6177,-2461.3823 844.0206,-2446.9794 855.398,-2435.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"858.0976,-2437.8522 862.6938,-2428.3062 853.1478,-2432.9024 858.0976,-2437.8522\"/>\n",
       "</g>\n",
       "<!-- 5741751824 -->\n",
       "<g id=\"node42\" class=\"node\">\n",
       "<title>5741751824</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"856.8091,-2561 763.1909,-2561 763.1909,-2541 856.8091,-2541 856.8091,-2561\"/>\n",
       "<text text-anchor=\"middle\" x=\"810\" y=\"-2547.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ReluBackward1</text>\n",
       "</g>\n",
       "<!-- 5741751824&#45;&gt;5741751320 -->\n",
       "<g id=\"edge41\" class=\"edge\">\n",
       "<title>5741751824&#45;&gt;5741751320</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M810,-2540.9707C810,-2530.6786 810,-2514.3754 810,-2501.3639\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"813.5001,-2501.0107 810,-2491.0107 806.5001,-2501.0107 813.5001,-2501.0107\"/>\n",
       "</g>\n",
       "<!-- 5741752160 -->\n",
       "<g id=\"node43\" class=\"node\">\n",
       "<title>5741752160</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"949.1177,-2624 796.8823,-2624 796.8823,-2604 949.1177,-2604 949.1177,-2624\"/>\n",
       "<text text-anchor=\"middle\" x=\"873\" y=\"-2610.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">NativeBatchNormBackward</text>\n",
       "</g>\n",
       "<!-- 5741752160&#45;&gt;5741751824 -->\n",
       "<g id=\"edge42\" class=\"edge\">\n",
       "<title>5741752160&#45;&gt;5741751824</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M862.878,-2603.878C853.3823,-2594.3823 838.9794,-2579.9794 827.602,-2568.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"829.8522,-2565.9024 820.3062,-2561.3062 824.9024,-2570.8522 829.8522,-2565.9024\"/>\n",
       "</g>\n",
       "<!-- 5741751936 -->\n",
       "<g id=\"node44\" class=\"node\">\n",
       "<title>5741751936</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"891.1547,-2687 728.8453,-2687 728.8453,-2667 891.1547,-2667 891.1547,-2687\"/>\n",
       "<text text-anchor=\"middle\" x=\"810\" y=\"-2673.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">MkldnnConvolutionBackward</text>\n",
       "</g>\n",
       "<!-- 5741751936&#45;&gt;5741752160 -->\n",
       "<g id=\"edge43\" class=\"edge\">\n",
       "<title>5741751936&#45;&gt;5741752160</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M820.122,-2666.878C829.6177,-2657.3823 844.0206,-2642.9794 855.398,-2631.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"858.0976,-2633.8522 862.6938,-2624.3062 853.1478,-2628.9024 858.0976,-2633.8522\"/>\n",
       "</g>\n",
       "<!-- 5741753624 -->\n",
       "<g id=\"node45\" class=\"node\">\n",
       "<title>5741753624</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"856.8091,-2757 763.1909,-2757 763.1909,-2737 856.8091,-2737 856.8091,-2757\"/>\n",
       "<text text-anchor=\"middle\" x=\"810\" y=\"-2743.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ReluBackward1</text>\n",
       "</g>\n",
       "<!-- 5741753624&#45;&gt;5741751936 -->\n",
       "<g id=\"edge44\" class=\"edge\">\n",
       "<title>5741753624&#45;&gt;5741751936</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M810,-2736.9707C810,-2726.6786 810,-2710.3754 810,-2697.3639\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"813.5001,-2697.0107 810,-2687.0107 806.5001,-2697.0107 813.5001,-2697.0107\"/>\n",
       "</g>\n",
       "<!-- 5741754016 -->\n",
       "<g id=\"node46\" class=\"node\">\n",
       "<title>5741754016</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"949.1177,-2820 796.8823,-2820 796.8823,-2800 949.1177,-2800 949.1177,-2820\"/>\n",
       "<text text-anchor=\"middle\" x=\"873\" y=\"-2806.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">NativeBatchNormBackward</text>\n",
       "</g>\n",
       "<!-- 5741754016&#45;&gt;5741753624 -->\n",
       "<g id=\"edge45\" class=\"edge\">\n",
       "<title>5741754016&#45;&gt;5741753624</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M862.878,-2799.878C853.3823,-2790.3823 838.9794,-2775.9794 827.602,-2764.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"829.8522,-2761.9024 820.3062,-2757.3062 824.9024,-2766.8522 829.8522,-2761.9024\"/>\n",
       "</g>\n",
       "<!-- 5741754520 -->\n",
       "<g id=\"node47\" class=\"node\">\n",
       "<title>5741754520</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"891.1547,-2883 728.8453,-2883 728.8453,-2863 891.1547,-2863 891.1547,-2883\"/>\n",
       "<text text-anchor=\"middle\" x=\"810\" y=\"-2869.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">MkldnnConvolutionBackward</text>\n",
       "</g>\n",
       "<!-- 5741754520&#45;&gt;5741754016 -->\n",
       "<g id=\"edge46\" class=\"edge\">\n",
       "<title>5741754520&#45;&gt;5741754016</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M820.122,-2862.878C829.6177,-2853.3823 844.0206,-2838.9794 855.398,-2827.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"858.0976,-2829.8522 862.6938,-2820.3062 853.1478,-2824.9024 858.0976,-2829.8522\"/>\n",
       "</g>\n",
       "<!-- 5741751152 -->\n",
       "<g id=\"node48\" class=\"node\">\n",
       "<title>5741751152</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"747.8091,-2953 654.1909,-2953 654.1909,-2933 747.8091,-2933 747.8091,-2953\"/>\n",
       "<text text-anchor=\"middle\" x=\"701\" y=\"-2939.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ReluBackward1</text>\n",
       "</g>\n",
       "<!-- 5741751152&#45;&gt;5741750648 -->\n",
       "<g id=\"edge318\" class=\"edge\">\n",
       "<title>5741751152&#45;&gt;5741750648</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M701,-2932.9894C701,-2910.829 701,-2855.9497 701,-2810 701,-2810 701,-2810 701,-2481 701,-2442.5157 724.709,-2402.7842 740.7072,-2380.355\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"743.6667,-2382.2395 746.7986,-2372.1181 738.0385,-2378.0773 743.6667,-2382.2395\"/>\n",
       "</g>\n",
       "<!-- 5741751152&#45;&gt;5741754520 -->\n",
       "<g id=\"edge47\" class=\"edge\">\n",
       "<title>5741751152&#45;&gt;5741754520</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M716.617,-2932.9707C734.7478,-2921.3271 764.8582,-2901.9902 785.9741,-2888.4295\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"787.8889,-2891.3594 794.4119,-2883.0107 784.1063,-2885.4694 787.8889,-2891.3594\"/>\n",
       "</g>\n",
       "<!-- 5741754296 -->\n",
       "<g id=\"node49\" class=\"node\">\n",
       "<title>5741754296</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"746.8111,-3016 655.1889,-3016 655.1889,-2996 746.8111,-2996 746.8111,-3016\"/>\n",
       "<text text-anchor=\"middle\" x=\"701\" y=\"-3002.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">AddBackward0</text>\n",
       "</g>\n",
       "<!-- 5741754296&#45;&gt;5741751152 -->\n",
       "<g id=\"edge48\" class=\"edge\">\n",
       "<title>5741754296&#45;&gt;5741751152</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M701,-2995.878C701,-2987.2041 701,-2974.4355 701,-2963.6186\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"704.5001,-2963.3062 701,-2953.3062 697.5001,-2963.3062 704.5001,-2963.3062\"/>\n",
       "</g>\n",
       "<!-- 5741755304 -->\n",
       "<g id=\"node50\" class=\"node\">\n",
       "<title>5741755304</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"895.1177,-3072 742.8823,-3072 742.8823,-3052 895.1177,-3052 895.1177,-3072\"/>\n",
       "<text text-anchor=\"middle\" x=\"819\" y=\"-3058.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">NativeBatchNormBackward</text>\n",
       "</g>\n",
       "<!-- 5741755304&#45;&gt;5741754296 -->\n",
       "<g id=\"edge49\" class=\"edge\">\n",
       "<title>5741755304&#45;&gt;5741754296</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M797.904,-3051.9883C779.3932,-3043.2036 752.2503,-3030.3222 731.3965,-3020.4255\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"732.8461,-3017.2393 722.3112,-3016.1138 729.8449,-3023.5633 732.8461,-3017.2393\"/>\n",
       "</g>\n",
       "<!-- 5741755864 -->\n",
       "<g id=\"node51\" class=\"node\">\n",
       "<title>5741755864</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"837.1547,-3135 674.8453,-3135 674.8453,-3115 837.1547,-3115 837.1547,-3135\"/>\n",
       "<text text-anchor=\"middle\" x=\"756\" y=\"-3121.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">MkldnnConvolutionBackward</text>\n",
       "</g>\n",
       "<!-- 5741755864&#45;&gt;5741755304 -->\n",
       "<g id=\"edge50\" class=\"edge\">\n",
       "<title>5741755864&#45;&gt;5741755304</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M766.122,-3114.878C775.6177,-3105.3823 790.0206,-3090.9794 801.398,-3079.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"804.0976,-3081.8522 808.6938,-3072.3062 799.1478,-3076.9024 804.0976,-3081.8522\"/>\n",
       "</g>\n",
       "<!-- 5741755584 -->\n",
       "<g id=\"node52\" class=\"node\">\n",
       "<title>5741755584</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"802.8091,-3205 709.1909,-3205 709.1909,-3185 802.8091,-3185 802.8091,-3205\"/>\n",
       "<text text-anchor=\"middle\" x=\"756\" y=\"-3191.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ReluBackward1</text>\n",
       "</g>\n",
       "<!-- 5741755584&#45;&gt;5741755864 -->\n",
       "<g id=\"edge51\" class=\"edge\">\n",
       "<title>5741755584&#45;&gt;5741755864</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M756,-3184.9707C756,-3174.6786 756,-3158.3754 756,-3145.3639\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"759.5001,-3145.0107 756,-3135.0107 752.5001,-3145.0107 759.5001,-3145.0107\"/>\n",
       "</g>\n",
       "<!-- 5741756088 -->\n",
       "<g id=\"node53\" class=\"node\">\n",
       "<title>5741756088</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"895.1177,-3268 742.8823,-3268 742.8823,-3248 895.1177,-3248 895.1177,-3268\"/>\n",
       "<text text-anchor=\"middle\" x=\"819\" y=\"-3254.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">NativeBatchNormBackward</text>\n",
       "</g>\n",
       "<!-- 5741756088&#45;&gt;5741755584 -->\n",
       "<g id=\"edge52\" class=\"edge\">\n",
       "<title>5741756088&#45;&gt;5741755584</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M808.878,-3247.878C799.3823,-3238.3823 784.9794,-3223.9794 773.602,-3212.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"775.8522,-3209.9024 766.3062,-3205.3062 770.9024,-3214.8522 775.8522,-3209.9024\"/>\n",
       "</g>\n",
       "<!-- 5741764960 -->\n",
       "<g id=\"node54\" class=\"node\">\n",
       "<title>5741764960</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"837.1547,-3331 674.8453,-3331 674.8453,-3311 837.1547,-3311 837.1547,-3331\"/>\n",
       "<text text-anchor=\"middle\" x=\"756\" y=\"-3317.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">MkldnnConvolutionBackward</text>\n",
       "</g>\n",
       "<!-- 5741764960&#45;&gt;5741756088 -->\n",
       "<g id=\"edge53\" class=\"edge\">\n",
       "<title>5741764960&#45;&gt;5741756088</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M766.122,-3310.878C775.6177,-3301.3823 790.0206,-3286.9794 801.398,-3275.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"804.0976,-3277.8522 808.6938,-3268.3062 799.1478,-3272.9024 804.0976,-3277.8522\"/>\n",
       "</g>\n",
       "<!-- 5741765520 -->\n",
       "<g id=\"node55\" class=\"node\">\n",
       "<title>5741765520</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"802.8091,-3401 709.1909,-3401 709.1909,-3381 802.8091,-3381 802.8091,-3401\"/>\n",
       "<text text-anchor=\"middle\" x=\"756\" y=\"-3387.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ReluBackward1</text>\n",
       "</g>\n",
       "<!-- 5741765520&#45;&gt;5741764960 -->\n",
       "<g id=\"edge54\" class=\"edge\">\n",
       "<title>5741765520&#45;&gt;5741764960</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M756,-3380.9707C756,-3370.6786 756,-3354.3754 756,-3341.3639\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"759.5001,-3341.0107 756,-3331.0107 752.5001,-3341.0107 759.5001,-3341.0107\"/>\n",
       "</g>\n",
       "<!-- 5741765912 -->\n",
       "<g id=\"node56\" class=\"node\">\n",
       "<title>5741765912</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"895.1177,-3464 742.8823,-3464 742.8823,-3444 895.1177,-3444 895.1177,-3464\"/>\n",
       "<text text-anchor=\"middle\" x=\"819\" y=\"-3450.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">NativeBatchNormBackward</text>\n",
       "</g>\n",
       "<!-- 5741765912&#45;&gt;5741765520 -->\n",
       "<g id=\"edge55\" class=\"edge\">\n",
       "<title>5741765912&#45;&gt;5741765520</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M808.878,-3443.878C799.3823,-3434.3823 784.9794,-3419.9794 773.602,-3408.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"775.8522,-3405.9024 766.3062,-3401.3062 770.9024,-3410.8522 775.8522,-3405.9024\"/>\n",
       "</g>\n",
       "<!-- 5741765632 -->\n",
       "<g id=\"node57\" class=\"node\">\n",
       "<title>5741765632</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"837.1547,-3527 674.8453,-3527 674.8453,-3507 837.1547,-3507 837.1547,-3527\"/>\n",
       "<text text-anchor=\"middle\" x=\"756\" y=\"-3513.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">MkldnnConvolutionBackward</text>\n",
       "</g>\n",
       "<!-- 5741765632&#45;&gt;5741765912 -->\n",
       "<g id=\"edge56\" class=\"edge\">\n",
       "<title>5741765632&#45;&gt;5741765912</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M766.122,-3506.878C775.6177,-3497.3823 790.0206,-3482.9794 801.398,-3471.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"804.0976,-3473.8522 808.6938,-3464.3062 799.1478,-3468.9024 804.0976,-3473.8522\"/>\n",
       "</g>\n",
       "<!-- 5741755472 -->\n",
       "<g id=\"node58\" class=\"node\">\n",
       "<title>5741755472</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"693.8091,-3597 600.1909,-3597 600.1909,-3577 693.8091,-3577 693.8091,-3597\"/>\n",
       "<text text-anchor=\"middle\" x=\"647\" y=\"-3583.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ReluBackward1</text>\n",
       "</g>\n",
       "<!-- 5741755472&#45;&gt;5741754296 -->\n",
       "<g id=\"edge308\" class=\"edge\">\n",
       "<title>5741755472&#45;&gt;5741754296</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M647,-3576.9894C647,-3554.829 647,-3499.9497 647,-3454 647,-3454 647,-3454 647,-3125 647,-3086.5157 670.709,-3046.7842 686.7072,-3024.355\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"689.6667,-3026.2395 692.7986,-3016.1181 684.0385,-3022.0773 689.6667,-3026.2395\"/>\n",
       "</g>\n",
       "<!-- 5741755472&#45;&gt;5741765632 -->\n",
       "<g id=\"edge57\" class=\"edge\">\n",
       "<title>5741755472&#45;&gt;5741765632</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M662.617,-3576.9707C680.7478,-3565.3271 710.8582,-3545.9902 731.9741,-3532.4295\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"733.8889,-3535.3594 740.4119,-3527.0107 730.1063,-3529.4694 733.8889,-3535.3594\"/>\n",
       "</g>\n",
       "<!-- 5741766136 -->\n",
       "<g id=\"node59\" class=\"node\">\n",
       "<title>5741766136</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"692.8111,-3660 601.1889,-3660 601.1889,-3640 692.8111,-3640 692.8111,-3660\"/>\n",
       "<text text-anchor=\"middle\" x=\"647\" y=\"-3646.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">AddBackward0</text>\n",
       "</g>\n",
       "<!-- 5741766136&#45;&gt;5741755472 -->\n",
       "<g id=\"edge58\" class=\"edge\">\n",
       "<title>5741766136&#45;&gt;5741755472</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M647,-3639.878C647,-3631.2041 647,-3618.4355 647,-3607.6186\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"650.5001,-3607.3062 647,-3597.3062 643.5001,-3607.3062 650.5001,-3607.3062\"/>\n",
       "</g>\n",
       "<!-- 5741767424 -->\n",
       "<g id=\"node60\" class=\"node\">\n",
       "<title>5741767424</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"841.1177,-3716 688.8823,-3716 688.8823,-3696 841.1177,-3696 841.1177,-3716\"/>\n",
       "<text text-anchor=\"middle\" x=\"765\" y=\"-3702.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">NativeBatchNormBackward</text>\n",
       "</g>\n",
       "<!-- 5741767424&#45;&gt;5741766136 -->\n",
       "<g id=\"edge59\" class=\"edge\">\n",
       "<title>5741767424&#45;&gt;5741766136</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M743.904,-3695.9883C725.3932,-3687.2036 698.2503,-3674.3222 677.3965,-3664.4255\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"678.8461,-3661.2393 668.3112,-3660.1138 675.8449,-3667.5633 678.8461,-3661.2393\"/>\n",
       "</g>\n",
       "<!-- 5741768432 -->\n",
       "<g id=\"node61\" class=\"node\">\n",
       "<title>5741768432</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"783.1547,-3779 620.8453,-3779 620.8453,-3759 783.1547,-3759 783.1547,-3779\"/>\n",
       "<text text-anchor=\"middle\" x=\"702\" y=\"-3765.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">MkldnnConvolutionBackward</text>\n",
       "</g>\n",
       "<!-- 5741768432&#45;&gt;5741767424 -->\n",
       "<g id=\"edge60\" class=\"edge\">\n",
       "<title>5741768432&#45;&gt;5741767424</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M712.122,-3758.878C721.6177,-3749.3823 736.0206,-3734.9794 747.398,-3723.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"750.0976,-3725.8522 754.6938,-3716.3062 745.1478,-3720.9024 750.0976,-3725.8522\"/>\n",
       "</g>\n",
       "<!-- 5741768544 -->\n",
       "<g id=\"node62\" class=\"node\">\n",
       "<title>5741768544</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"748.8091,-3849 655.1909,-3849 655.1909,-3829 748.8091,-3829 748.8091,-3849\"/>\n",
       "<text text-anchor=\"middle\" x=\"702\" y=\"-3835.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ReluBackward1</text>\n",
       "</g>\n",
       "<!-- 5741768544&#45;&gt;5741768432 -->\n",
       "<g id=\"edge61\" class=\"edge\">\n",
       "<title>5741768544&#45;&gt;5741768432</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M702,-3828.9707C702,-3818.6786 702,-3802.3754 702,-3789.3639\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"705.5001,-3789.0107 702,-3779.0107 698.5001,-3789.0107 705.5001,-3789.0107\"/>\n",
       "</g>\n",
       "<!-- 5741768600 -->\n",
       "<g id=\"node63\" class=\"node\">\n",
       "<title>5741768600</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"841.1177,-3912 688.8823,-3912 688.8823,-3892 841.1177,-3892 841.1177,-3912\"/>\n",
       "<text text-anchor=\"middle\" x=\"765\" y=\"-3898.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">NativeBatchNormBackward</text>\n",
       "</g>\n",
       "<!-- 5741768600&#45;&gt;5741768544 -->\n",
       "<g id=\"edge62\" class=\"edge\">\n",
       "<title>5741768600&#45;&gt;5741768544</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M754.878,-3891.878C745.3823,-3882.3823 730.9794,-3867.9794 719.602,-3856.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"721.8522,-3853.9024 712.3062,-3849.3062 716.9024,-3858.8522 721.8522,-3853.9024\"/>\n",
       "</g>\n",
       "<!-- 5741834368 -->\n",
       "<g id=\"node64\" class=\"node\">\n",
       "<title>5741834368</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"783.1547,-3975 620.8453,-3975 620.8453,-3955 783.1547,-3955 783.1547,-3975\"/>\n",
       "<text text-anchor=\"middle\" x=\"702\" y=\"-3961.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">MkldnnConvolutionBackward</text>\n",
       "</g>\n",
       "<!-- 5741834368&#45;&gt;5741768600 -->\n",
       "<g id=\"edge63\" class=\"edge\">\n",
       "<title>5741834368&#45;&gt;5741768600</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M712.122,-3954.878C721.6177,-3945.3823 736.0206,-3930.9794 747.398,-3919.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"750.0976,-3921.8522 754.6938,-3912.3062 745.1478,-3916.9024 750.0976,-3921.8522\"/>\n",
       "</g>\n",
       "<!-- 5741834480 -->\n",
       "<g id=\"node65\" class=\"node\">\n",
       "<title>5741834480</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"748.8091,-4045 655.1909,-4045 655.1909,-4025 748.8091,-4025 748.8091,-4045\"/>\n",
       "<text text-anchor=\"middle\" x=\"702\" y=\"-4031.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ReluBackward1</text>\n",
       "</g>\n",
       "<!-- 5741834480&#45;&gt;5741834368 -->\n",
       "<g id=\"edge64\" class=\"edge\">\n",
       "<title>5741834480&#45;&gt;5741834368</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M702,-4024.9707C702,-4014.6786 702,-3998.3754 702,-3985.3639\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"705.5001,-3985.0107 702,-3975.0107 698.5001,-3985.0107 705.5001,-3985.0107\"/>\n",
       "</g>\n",
       "<!-- 5741834592 -->\n",
       "<g id=\"node66\" class=\"node\">\n",
       "<title>5741834592</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"841.1177,-4108 688.8823,-4108 688.8823,-4088 841.1177,-4088 841.1177,-4108\"/>\n",
       "<text text-anchor=\"middle\" x=\"765\" y=\"-4094.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">NativeBatchNormBackward</text>\n",
       "</g>\n",
       "<!-- 5741834592&#45;&gt;5741834480 -->\n",
       "<g id=\"edge65\" class=\"edge\">\n",
       "<title>5741834592&#45;&gt;5741834480</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M754.878,-4087.878C745.3823,-4078.3823 730.9794,-4063.9794 719.602,-4052.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"721.8522,-4049.9024 712.3062,-4045.3062 716.9024,-4054.8522 721.8522,-4049.9024\"/>\n",
       "</g>\n",
       "<!-- 5741834704 -->\n",
       "<g id=\"node67\" class=\"node\">\n",
       "<title>5741834704</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"783.1547,-4171 620.8453,-4171 620.8453,-4151 783.1547,-4151 783.1547,-4171\"/>\n",
       "<text text-anchor=\"middle\" x=\"702\" y=\"-4157.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">MkldnnConvolutionBackward</text>\n",
       "</g>\n",
       "<!-- 5741834704&#45;&gt;5741834592 -->\n",
       "<g id=\"edge66\" class=\"edge\">\n",
       "<title>5741834704&#45;&gt;5741834592</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M712.122,-4150.878C721.6177,-4141.3823 736.0206,-4126.9794 747.398,-4115.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"750.0976,-4117.8522 754.6938,-4108.3062 745.1478,-4112.9024 750.0976,-4117.8522\"/>\n",
       "</g>\n",
       "<!-- 5741768152 -->\n",
       "<g id=\"node68\" class=\"node\">\n",
       "<title>5741768152</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"639.8091,-4241 546.1909,-4241 546.1909,-4221 639.8091,-4221 639.8091,-4241\"/>\n",
       "<text text-anchor=\"middle\" x=\"593\" y=\"-4227.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ReluBackward1</text>\n",
       "</g>\n",
       "<!-- 5741768152&#45;&gt;5741766136 -->\n",
       "<g id=\"edge298\" class=\"edge\">\n",
       "<title>5741768152&#45;&gt;5741766136</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M593,-4220.9894C593,-4198.829 593,-4143.9497 593,-4098 593,-4098 593,-4098 593,-3769 593,-3730.5157 616.709,-3690.7842 632.7072,-3668.355\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"635.6667,-3670.2395 638.7986,-3660.1181 630.0385,-3666.0773 635.6667,-3670.2395\"/>\n",
       "</g>\n",
       "<!-- 5741768152&#45;&gt;5741834704 -->\n",
       "<g id=\"edge67\" class=\"edge\">\n",
       "<title>5741768152&#45;&gt;5741834704</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M608.617,-4220.9707C626.7478,-4209.3271 656.8582,-4189.9902 677.9741,-4176.4295\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"679.8889,-4179.3594 686.4119,-4171.0107 676.1063,-4173.4694 679.8889,-4179.3594\"/>\n",
       "</g>\n",
       "<!-- 5741834872 -->\n",
       "<g id=\"node69\" class=\"node\">\n",
       "<title>5741834872</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"638.8111,-4304 547.1889,-4304 547.1889,-4284 638.8111,-4284 638.8111,-4304\"/>\n",
       "<text text-anchor=\"middle\" x=\"593\" y=\"-4290.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">AddBackward0</text>\n",
       "</g>\n",
       "<!-- 5741834872&#45;&gt;5741768152 -->\n",
       "<g id=\"edge68\" class=\"edge\">\n",
       "<title>5741834872&#45;&gt;5741768152</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M593,-4283.878C593,-4275.2041 593,-4262.4355 593,-4251.6186\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"596.5001,-4251.3062 593,-4241.3062 589.5001,-4251.3062 596.5001,-4251.3062\"/>\n",
       "</g>\n",
       "<!-- 5741834984 -->\n",
       "<g id=\"node70\" class=\"node\">\n",
       "<title>5741834984</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"787.1177,-4360 634.8823,-4360 634.8823,-4340 787.1177,-4340 787.1177,-4360\"/>\n",
       "<text text-anchor=\"middle\" x=\"711\" y=\"-4346.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">NativeBatchNormBackward</text>\n",
       "</g>\n",
       "<!-- 5741834984&#45;&gt;5741834872 -->\n",
       "<g id=\"edge69\" class=\"edge\">\n",
       "<title>5741834984&#45;&gt;5741834872</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M689.904,-4339.9883C671.3932,-4331.2036 644.2503,-4318.3222 623.3965,-4308.4255\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"624.8461,-4305.2393 614.3112,-4304.1138 621.8449,-4311.5633 624.8461,-4305.2393\"/>\n",
       "</g>\n",
       "<!-- 5741835152 -->\n",
       "<g id=\"node71\" class=\"node\">\n",
       "<title>5741835152</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"729.1547,-4423 566.8453,-4423 566.8453,-4403 729.1547,-4403 729.1547,-4423\"/>\n",
       "<text text-anchor=\"middle\" x=\"648\" y=\"-4409.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">MkldnnConvolutionBackward</text>\n",
       "</g>\n",
       "<!-- 5741835152&#45;&gt;5741834984 -->\n",
       "<g id=\"edge70\" class=\"edge\">\n",
       "<title>5741835152&#45;&gt;5741834984</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M658.122,-4402.878C667.6177,-4393.3823 682.0206,-4378.9794 693.398,-4367.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"696.0976,-4369.8522 700.6938,-4360.3062 691.1478,-4364.9024 696.0976,-4369.8522\"/>\n",
       "</g>\n",
       "<!-- 5741835264 -->\n",
       "<g id=\"node72\" class=\"node\">\n",
       "<title>5741835264</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"694.8091,-4493 601.1909,-4493 601.1909,-4473 694.8091,-4473 694.8091,-4493\"/>\n",
       "<text text-anchor=\"middle\" x=\"648\" y=\"-4479.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ReluBackward1</text>\n",
       "</g>\n",
       "<!-- 5741835264&#45;&gt;5741835152 -->\n",
       "<g id=\"edge71\" class=\"edge\">\n",
       "<title>5741835264&#45;&gt;5741835152</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M648,-4472.9707C648,-4462.6786 648,-4446.3754 648,-4433.3639\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"651.5001,-4433.0107 648,-4423.0107 644.5001,-4433.0107 651.5001,-4433.0107\"/>\n",
       "</g>\n",
       "<!-- 5741835376 -->\n",
       "<g id=\"node73\" class=\"node\">\n",
       "<title>5741835376</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"787.1177,-4556 634.8823,-4556 634.8823,-4536 787.1177,-4536 787.1177,-4556\"/>\n",
       "<text text-anchor=\"middle\" x=\"711\" y=\"-4542.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">NativeBatchNormBackward</text>\n",
       "</g>\n",
       "<!-- 5741835376&#45;&gt;5741835264 -->\n",
       "<g id=\"edge72\" class=\"edge\">\n",
       "<title>5741835376&#45;&gt;5741835264</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M700.878,-4535.878C691.3823,-4526.3823 676.9794,-4511.9794 665.602,-4500.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"667.8522,-4497.9024 658.3062,-4493.3062 662.9024,-4502.8522 667.8522,-4497.9024\"/>\n",
       "</g>\n",
       "<!-- 5741835488 -->\n",
       "<g id=\"node74\" class=\"node\">\n",
       "<title>5741835488</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"729.1547,-4619 566.8453,-4619 566.8453,-4599 729.1547,-4599 729.1547,-4619\"/>\n",
       "<text text-anchor=\"middle\" x=\"648\" y=\"-4605.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">MkldnnConvolutionBackward</text>\n",
       "</g>\n",
       "<!-- 5741835488&#45;&gt;5741835376 -->\n",
       "<g id=\"edge73\" class=\"edge\">\n",
       "<title>5741835488&#45;&gt;5741835376</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M658.122,-4598.878C667.6177,-4589.3823 682.0206,-4574.9794 693.398,-4563.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"696.0976,-4565.8522 700.6938,-4556.3062 691.1478,-4560.9024 696.0976,-4565.8522\"/>\n",
       "</g>\n",
       "<!-- 5741835600 -->\n",
       "<g id=\"node75\" class=\"node\">\n",
       "<title>5741835600</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"694.8091,-4689 601.1909,-4689 601.1909,-4669 694.8091,-4669 694.8091,-4689\"/>\n",
       "<text text-anchor=\"middle\" x=\"648\" y=\"-4675.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ReluBackward1</text>\n",
       "</g>\n",
       "<!-- 5741835600&#45;&gt;5741835488 -->\n",
       "<g id=\"edge74\" class=\"edge\">\n",
       "<title>5741835600&#45;&gt;5741835488</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M648,-4668.9707C648,-4658.6786 648,-4642.3754 648,-4629.3639\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"651.5001,-4629.0107 648,-4619.0107 644.5001,-4629.0107 651.5001,-4629.0107\"/>\n",
       "</g>\n",
       "<!-- 5741835712 -->\n",
       "<g id=\"node76\" class=\"node\">\n",
       "<title>5741835712</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"787.1177,-4752 634.8823,-4752 634.8823,-4732 787.1177,-4732 787.1177,-4752\"/>\n",
       "<text text-anchor=\"middle\" x=\"711\" y=\"-4738.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">NativeBatchNormBackward</text>\n",
       "</g>\n",
       "<!-- 5741835712&#45;&gt;5741835600 -->\n",
       "<g id=\"edge75\" class=\"edge\">\n",
       "<title>5741835712&#45;&gt;5741835600</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M700.878,-4731.878C691.3823,-4722.3823 676.9794,-4707.9794 665.602,-4696.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"667.8522,-4693.9024 658.3062,-4689.3062 662.9024,-4698.8522 667.8522,-4693.9024\"/>\n",
       "</g>\n",
       "<!-- 5741835824 -->\n",
       "<g id=\"node77\" class=\"node\">\n",
       "<title>5741835824</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"729.1547,-4815 566.8453,-4815 566.8453,-4795 729.1547,-4795 729.1547,-4815\"/>\n",
       "<text text-anchor=\"middle\" x=\"648\" y=\"-4801.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">MkldnnConvolutionBackward</text>\n",
       "</g>\n",
       "<!-- 5741835824&#45;&gt;5741835712 -->\n",
       "<g id=\"edge76\" class=\"edge\">\n",
       "<title>5741835824&#45;&gt;5741835712</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M658.122,-4794.878C667.6177,-4785.3823 682.0206,-4770.9794 693.398,-4759.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"696.0976,-4761.8522 700.6938,-4752.3062 691.1478,-4756.9024 696.0976,-4761.8522\"/>\n",
       "</g>\n",
       "<!-- 5741835040 -->\n",
       "<g id=\"node78\" class=\"node\">\n",
       "<title>5741835040</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"585.8091,-4885 492.1909,-4885 492.1909,-4865 585.8091,-4865 585.8091,-4885\"/>\n",
       "<text text-anchor=\"middle\" x=\"539\" y=\"-4871.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ReluBackward1</text>\n",
       "</g>\n",
       "<!-- 5741835040&#45;&gt;5741834872 -->\n",
       "<g id=\"edge288\" class=\"edge\">\n",
       "<title>5741835040&#45;&gt;5741834872</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M539,-4864.9894C539,-4842.829 539,-4787.9497 539,-4742 539,-4742 539,-4742 539,-4413 539,-4374.5157 562.709,-4334.7842 578.7072,-4312.355\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"581.6667,-4314.2395 584.7986,-4304.1181 576.0385,-4310.0773 581.6667,-4314.2395\"/>\n",
       "</g>\n",
       "<!-- 5741835040&#45;&gt;5741835824 -->\n",
       "<g id=\"edge77\" class=\"edge\">\n",
       "<title>5741835040&#45;&gt;5741835824</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M554.617,-4864.9707C572.7478,-4853.3271 602.8582,-4833.9902 623.9741,-4820.4295\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"625.8889,-4823.3594 632.4119,-4815.0107 622.1063,-4817.4694 625.8889,-4823.3594\"/>\n",
       "</g>\n",
       "<!-- 5741835992 -->\n",
       "<g id=\"node79\" class=\"node\">\n",
       "<title>5741835992</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"584.8111,-4948 493.1889,-4948 493.1889,-4928 584.8111,-4928 584.8111,-4948\"/>\n",
       "<text text-anchor=\"middle\" x=\"539\" y=\"-4934.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">AddBackward0</text>\n",
       "</g>\n",
       "<!-- 5741835992&#45;&gt;5741835040 -->\n",
       "<g id=\"edge78\" class=\"edge\">\n",
       "<title>5741835992&#45;&gt;5741835040</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M539,-4927.878C539,-4919.2041 539,-4906.4355 539,-4895.6186\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"542.5001,-4895.3062 539,-4885.3062 535.5001,-4895.3062 542.5001,-4895.3062\"/>\n",
       "</g>\n",
       "<!-- 5741836104 -->\n",
       "<g id=\"node80\" class=\"node\">\n",
       "<title>5741836104</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"733.1177,-5004 580.8823,-5004 580.8823,-4984 733.1177,-4984 733.1177,-5004\"/>\n",
       "<text text-anchor=\"middle\" x=\"657\" y=\"-4990.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">NativeBatchNormBackward</text>\n",
       "</g>\n",
       "<!-- 5741836104&#45;&gt;5741835992 -->\n",
       "<g id=\"edge79\" class=\"edge\">\n",
       "<title>5741836104&#45;&gt;5741835992</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M635.904,-4983.9883C617.3932,-4975.2036 590.2503,-4962.3222 569.3965,-4952.4255\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"570.8461,-4949.2393 560.3112,-4948.1138 567.8449,-4955.5633 570.8461,-4949.2393\"/>\n",
       "</g>\n",
       "<!-- 5741836272 -->\n",
       "<g id=\"node81\" class=\"node\">\n",
       "<title>5741836272</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"675.1547,-5067 512.8453,-5067 512.8453,-5047 675.1547,-5047 675.1547,-5067\"/>\n",
       "<text text-anchor=\"middle\" x=\"594\" y=\"-5053.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">MkldnnConvolutionBackward</text>\n",
       "</g>\n",
       "<!-- 5741836272&#45;&gt;5741836104 -->\n",
       "<g id=\"edge80\" class=\"edge\">\n",
       "<title>5741836272&#45;&gt;5741836104</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M604.122,-5046.878C613.6177,-5037.3823 628.0206,-5022.9794 639.398,-5011.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"642.0976,-5013.8522 646.6938,-5004.3062 637.1478,-5008.9024 642.0976,-5013.8522\"/>\n",
       "</g>\n",
       "<!-- 5741836384 -->\n",
       "<g id=\"node82\" class=\"node\">\n",
       "<title>5741836384</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"640.8091,-5137 547.1909,-5137 547.1909,-5117 640.8091,-5117 640.8091,-5137\"/>\n",
       "<text text-anchor=\"middle\" x=\"594\" y=\"-5123.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ReluBackward1</text>\n",
       "</g>\n",
       "<!-- 5741836384&#45;&gt;5741836272 -->\n",
       "<g id=\"edge81\" class=\"edge\">\n",
       "<title>5741836384&#45;&gt;5741836272</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M594,-5116.9707C594,-5106.6786 594,-5090.3754 594,-5077.3639\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"597.5001,-5077.0107 594,-5067.0107 590.5001,-5077.0107 597.5001,-5077.0107\"/>\n",
       "</g>\n",
       "<!-- 5741836496 -->\n",
       "<g id=\"node83\" class=\"node\">\n",
       "<title>5741836496</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"733.1177,-5200 580.8823,-5200 580.8823,-5180 733.1177,-5180 733.1177,-5200\"/>\n",
       "<text text-anchor=\"middle\" x=\"657\" y=\"-5186.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">NativeBatchNormBackward</text>\n",
       "</g>\n",
       "<!-- 5741836496&#45;&gt;5741836384 -->\n",
       "<g id=\"edge82\" class=\"edge\">\n",
       "<title>5741836496&#45;&gt;5741836384</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M646.878,-5179.878C637.3823,-5170.3823 622.9794,-5155.9794 611.602,-5144.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"613.8522,-5141.9024 604.3062,-5137.3062 608.9024,-5146.8522 613.8522,-5141.9024\"/>\n",
       "</g>\n",
       "<!-- 5741836608 -->\n",
       "<g id=\"node84\" class=\"node\">\n",
       "<title>5741836608</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"675.1547,-5263 512.8453,-5263 512.8453,-5243 675.1547,-5243 675.1547,-5263\"/>\n",
       "<text text-anchor=\"middle\" x=\"594\" y=\"-5249.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">MkldnnConvolutionBackward</text>\n",
       "</g>\n",
       "<!-- 5741836608&#45;&gt;5741836496 -->\n",
       "<g id=\"edge83\" class=\"edge\">\n",
       "<title>5741836608&#45;&gt;5741836496</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M604.122,-5242.878C613.6177,-5233.3823 628.0206,-5218.9794 639.398,-5207.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"642.0976,-5209.8522 646.6938,-5200.3062 637.1478,-5204.9024 642.0976,-5209.8522\"/>\n",
       "</g>\n",
       "<!-- 5741836720 -->\n",
       "<g id=\"node85\" class=\"node\">\n",
       "<title>5741836720</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"640.8091,-5333 547.1909,-5333 547.1909,-5313 640.8091,-5313 640.8091,-5333\"/>\n",
       "<text text-anchor=\"middle\" x=\"594\" y=\"-5319.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ReluBackward1</text>\n",
       "</g>\n",
       "<!-- 5741836720&#45;&gt;5741836608 -->\n",
       "<g id=\"edge84\" class=\"edge\">\n",
       "<title>5741836720&#45;&gt;5741836608</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M594,-5312.9707C594,-5302.6786 594,-5286.3754 594,-5273.3639\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"597.5001,-5273.0107 594,-5263.0107 590.5001,-5273.0107 597.5001,-5273.0107\"/>\n",
       "</g>\n",
       "<!-- 5741836832 -->\n",
       "<g id=\"node86\" class=\"node\">\n",
       "<title>5741836832</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"733.1177,-5396 580.8823,-5396 580.8823,-5376 733.1177,-5376 733.1177,-5396\"/>\n",
       "<text text-anchor=\"middle\" x=\"657\" y=\"-5382.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">NativeBatchNormBackward</text>\n",
       "</g>\n",
       "<!-- 5741836832&#45;&gt;5741836720 -->\n",
       "<g id=\"edge85\" class=\"edge\">\n",
       "<title>5741836832&#45;&gt;5741836720</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M646.878,-5375.878C637.3823,-5366.3823 622.9794,-5351.9794 611.602,-5340.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"613.8522,-5337.9024 604.3062,-5333.3062 608.9024,-5342.8522 613.8522,-5337.9024\"/>\n",
       "</g>\n",
       "<!-- 5741836944 -->\n",
       "<g id=\"node87\" class=\"node\">\n",
       "<title>5741836944</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"675.1547,-5459 512.8453,-5459 512.8453,-5439 675.1547,-5439 675.1547,-5459\"/>\n",
       "<text text-anchor=\"middle\" x=\"594\" y=\"-5445.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">MkldnnConvolutionBackward</text>\n",
       "</g>\n",
       "<!-- 5741836944&#45;&gt;5741836832 -->\n",
       "<g id=\"edge86\" class=\"edge\">\n",
       "<title>5741836944&#45;&gt;5741836832</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M604.122,-5438.878C613.6177,-5429.3823 628.0206,-5414.9794 639.398,-5403.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"642.0976,-5405.8522 646.6938,-5396.3062 637.1478,-5400.9024 642.0976,-5405.8522\"/>\n",
       "</g>\n",
       "<!-- 5741836160 -->\n",
       "<g id=\"node88\" class=\"node\">\n",
       "<title>5741836160</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"531.8091,-5529 438.1909,-5529 438.1909,-5509 531.8091,-5509 531.8091,-5529\"/>\n",
       "<text text-anchor=\"middle\" x=\"485\" y=\"-5515.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ReluBackward1</text>\n",
       "</g>\n",
       "<!-- 5741836160&#45;&gt;5741835992 -->\n",
       "<g id=\"edge278\" class=\"edge\">\n",
       "<title>5741836160&#45;&gt;5741835992</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M485,-5508.9894C485,-5486.829 485,-5431.9497 485,-5386 485,-5386 485,-5386 485,-5057 485,-5018.5157 508.709,-4978.7842 524.7072,-4956.355\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"527.6667,-4958.2395 530.7986,-4948.1181 522.0385,-4954.0773 527.6667,-4958.2395\"/>\n",
       "</g>\n",
       "<!-- 5741836160&#45;&gt;5741836944 -->\n",
       "<g id=\"edge87\" class=\"edge\">\n",
       "<title>5741836160&#45;&gt;5741836944</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M500.617,-5508.9707C518.7478,-5497.3271 548.8582,-5477.9902 569.9741,-5464.4295\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"571.8889,-5467.3594 578.4119,-5459.0107 568.1063,-5461.4694 571.8889,-5467.3594\"/>\n",
       "</g>\n",
       "<!-- 5741837112 -->\n",
       "<g id=\"node89\" class=\"node\">\n",
       "<title>5741837112</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"530.8111,-5592 439.1889,-5592 439.1889,-5572 530.8111,-5572 530.8111,-5592\"/>\n",
       "<text text-anchor=\"middle\" x=\"485\" y=\"-5578.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">AddBackward0</text>\n",
       "</g>\n",
       "<!-- 5741837112&#45;&gt;5741836160 -->\n",
       "<g id=\"edge88\" class=\"edge\">\n",
       "<title>5741837112&#45;&gt;5741836160</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M485,-5571.878C485,-5563.2041 485,-5550.4355 485,-5539.6186\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"488.5001,-5539.3062 485,-5529.3062 481.5001,-5539.3062 488.5001,-5539.3062\"/>\n",
       "</g>\n",
       "<!-- 5741837224 -->\n",
       "<g id=\"node90\" class=\"node\">\n",
       "<title>5741837224</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"679.1177,-5648 526.8823,-5648 526.8823,-5628 679.1177,-5628 679.1177,-5648\"/>\n",
       "<text text-anchor=\"middle\" x=\"603\" y=\"-5634.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">NativeBatchNormBackward</text>\n",
       "</g>\n",
       "<!-- 5741837224&#45;&gt;5741837112 -->\n",
       "<g id=\"edge89\" class=\"edge\">\n",
       "<title>5741837224&#45;&gt;5741837112</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M581.904,-5627.9883C563.3932,-5619.2036 536.2503,-5606.3222 515.3965,-5596.4255\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"516.8461,-5593.2393 506.3112,-5592.1138 513.8449,-5599.5633 516.8461,-5593.2393\"/>\n",
       "</g>\n",
       "<!-- 5741837392 -->\n",
       "<g id=\"node91\" class=\"node\">\n",
       "<title>5741837392</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"621.1547,-5711 458.8453,-5711 458.8453,-5691 621.1547,-5691 621.1547,-5711\"/>\n",
       "<text text-anchor=\"middle\" x=\"540\" y=\"-5697.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">MkldnnConvolutionBackward</text>\n",
       "</g>\n",
       "<!-- 5741837392&#45;&gt;5741837224 -->\n",
       "<g id=\"edge90\" class=\"edge\">\n",
       "<title>5741837392&#45;&gt;5741837224</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M550.122,-5690.878C559.6177,-5681.3823 574.0206,-5666.9794 585.398,-5655.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"588.0976,-5657.8522 592.6938,-5648.3062 583.1478,-5652.9024 588.0976,-5657.8522\"/>\n",
       "</g>\n",
       "<!-- 5741837504 -->\n",
       "<g id=\"node92\" class=\"node\">\n",
       "<title>5741837504</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"586.8091,-5781 493.1909,-5781 493.1909,-5761 586.8091,-5761 586.8091,-5781\"/>\n",
       "<text text-anchor=\"middle\" x=\"540\" y=\"-5767.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ReluBackward1</text>\n",
       "</g>\n",
       "<!-- 5741837504&#45;&gt;5741837392 -->\n",
       "<g id=\"edge91\" class=\"edge\">\n",
       "<title>5741837504&#45;&gt;5741837392</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M540,-5760.9707C540,-5750.6786 540,-5734.3754 540,-5721.3639\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"543.5001,-5721.0107 540,-5711.0107 536.5001,-5721.0107 543.5001,-5721.0107\"/>\n",
       "</g>\n",
       "<!-- 5741837616 -->\n",
       "<g id=\"node93\" class=\"node\">\n",
       "<title>5741837616</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"713.1177,-5844 560.8823,-5844 560.8823,-5824 713.1177,-5824 713.1177,-5844\"/>\n",
       "<text text-anchor=\"middle\" x=\"637\" y=\"-5830.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">NativeBatchNormBackward</text>\n",
       "</g>\n",
       "<!-- 5741837616&#45;&gt;5741837504 -->\n",
       "<g id=\"edge92\" class=\"edge\">\n",
       "<title>5741837616&#45;&gt;5741837504</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M621.4153,-5823.878C606.0009,-5813.8666 582.1878,-5798.4003 564.2903,-5786.7762\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"565.8389,-5783.6086 555.5461,-5781.0969 562.0261,-5789.4791 565.8389,-5783.6086\"/>\n",
       "</g>\n",
       "<!-- 5741837728 -->\n",
       "<g id=\"node94\" class=\"node\">\n",
       "<title>5741837728</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"655.1547,-5907 492.8453,-5907 492.8453,-5887 655.1547,-5887 655.1547,-5907\"/>\n",
       "<text text-anchor=\"middle\" x=\"574\" y=\"-5893.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">MkldnnConvolutionBackward</text>\n",
       "</g>\n",
       "<!-- 5741837728&#45;&gt;5741837616 -->\n",
       "<g id=\"edge93\" class=\"edge\">\n",
       "<title>5741837728&#45;&gt;5741837616</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M584.122,-5886.878C593.6177,-5877.3823 608.0206,-5862.9794 619.398,-5851.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"622.0976,-5853.8522 626.6938,-5844.3062 617.1478,-5848.9024 622.0976,-5853.8522\"/>\n",
       "</g>\n",
       "<!-- 5741837840 -->\n",
       "<g id=\"node95\" class=\"node\">\n",
       "<title>5741837840</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"620.8091,-5977 527.1909,-5977 527.1909,-5957 620.8091,-5957 620.8091,-5977\"/>\n",
       "<text text-anchor=\"middle\" x=\"574\" y=\"-5963.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ReluBackward1</text>\n",
       "</g>\n",
       "<!-- 5741837840&#45;&gt;5741837728 -->\n",
       "<g id=\"edge94\" class=\"edge\">\n",
       "<title>5741837840&#45;&gt;5741837728</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M574,-5956.9707C574,-5946.6786 574,-5930.3754 574,-5917.3639\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"577.5001,-5917.0107 574,-5907.0107 570.5001,-5917.0107 577.5001,-5917.0107\"/>\n",
       "</g>\n",
       "<!-- 5741837952 -->\n",
       "<g id=\"node96\" class=\"node\">\n",
       "<title>5741837952</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"747.1177,-6040 594.8823,-6040 594.8823,-6020 747.1177,-6020 747.1177,-6040\"/>\n",
       "<text text-anchor=\"middle\" x=\"671\" y=\"-6026.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">NativeBatchNormBackward</text>\n",
       "</g>\n",
       "<!-- 5741837952&#45;&gt;5741837840 -->\n",
       "<g id=\"edge95\" class=\"edge\">\n",
       "<title>5741837952&#45;&gt;5741837840</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M655.4153,-6019.878C640.0009,-6009.8666 616.1878,-5994.4003 598.2903,-5982.7762\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"599.8389,-5979.6086 589.5461,-5977.0969 596.0261,-5985.4791 599.8389,-5979.6086\"/>\n",
       "</g>\n",
       "<!-- 5741838120 -->\n",
       "<g id=\"node97\" class=\"node\">\n",
       "<title>5741838120</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"689.1547,-6103 526.8453,-6103 526.8453,-6083 689.1547,-6083 689.1547,-6103\"/>\n",
       "<text text-anchor=\"middle\" x=\"608\" y=\"-6089.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">MkldnnConvolutionBackward</text>\n",
       "</g>\n",
       "<!-- 5741838120&#45;&gt;5741837952 -->\n",
       "<g id=\"edge96\" class=\"edge\">\n",
       "<title>5741838120&#45;&gt;5741837952</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M618.122,-6082.878C627.6177,-6073.3823 642.0206,-6058.9794 653.398,-6047.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"656.0976,-6049.8522 660.6938,-6040.3062 651.1478,-6044.9024 656.0976,-6049.8522\"/>\n",
       "</g>\n",
       "<!-- 5741838232 -->\n",
       "<g id=\"node98\" class=\"node\">\n",
       "<title>5741838232</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"565.8091,-6173 472.1909,-6173 472.1909,-6153 565.8091,-6153 565.8091,-6173\"/>\n",
       "<text text-anchor=\"middle\" x=\"519\" y=\"-6159.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ReluBackward1</text>\n",
       "</g>\n",
       "<!-- 5741838232&#45;&gt;5741838120 -->\n",
       "<g id=\"edge97\" class=\"edge\">\n",
       "<title>5741838232&#45;&gt;5741838120</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M531.7515,-6152.9707C546.159,-6141.639 569.831,-6123.0205 586.9816,-6109.5314\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"589.5757,-6111.9439 595.2721,-6103.0107 585.2482,-6106.4418 589.5757,-6111.9439\"/>\n",
       "</g>\n",
       "<!-- 5741837448 -->\n",
       "<g id=\"node258\" class=\"node\">\n",
       "<title>5741837448</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"508.1547,-6103 345.8453,-6103 345.8453,-6083 508.1547,-6083 508.1547,-6103\"/>\n",
       "<text text-anchor=\"middle\" x=\"427\" y=\"-6089.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">MkldnnConvolutionBackward</text>\n",
       "</g>\n",
       "<!-- 5741838232&#45;&gt;5741837448 -->\n",
       "<g id=\"edge265\" class=\"edge\">\n",
       "<title>5741838232&#45;&gt;5741837448</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M505.8186,-6152.9707C490.7889,-6141.535 466.0058,-6122.6783 448.2407,-6109.1614\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"450.2346,-6106.2805 440.1569,-6103.0107 445.9959,-6111.8514 450.2346,-6106.2805\"/>\n",
       "</g>\n",
       "<!-- 5741842504 -->\n",
       "<g id=\"node99\" class=\"node\">\n",
       "<title>5741842504</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"564.8111,-6236 473.1889,-6236 473.1889,-6216 564.8111,-6216 564.8111,-6236\"/>\n",
       "<text text-anchor=\"middle\" x=\"519\" y=\"-6222.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">AddBackward0</text>\n",
       "</g>\n",
       "<!-- 5741842504&#45;&gt;5741838232 -->\n",
       "<g id=\"edge98\" class=\"edge\">\n",
       "<title>5741842504&#45;&gt;5741838232</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M519,-6215.878C519,-6207.2041 519,-6194.4355 519,-6183.6186\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"522.5001,-6183.3062 519,-6173.3062 515.5001,-6183.3062 522.5001,-6183.3062\"/>\n",
       "</g>\n",
       "<!-- 5741842672 -->\n",
       "<g id=\"node100\" class=\"node\">\n",
       "<title>5741842672</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"713.1177,-6292 560.8823,-6292 560.8823,-6272 713.1177,-6272 713.1177,-6292\"/>\n",
       "<text text-anchor=\"middle\" x=\"637\" y=\"-6278.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">NativeBatchNormBackward</text>\n",
       "</g>\n",
       "<!-- 5741842672&#45;&gt;5741842504 -->\n",
       "<g id=\"edge99\" class=\"edge\">\n",
       "<title>5741842672&#45;&gt;5741842504</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M615.904,-6271.9883C597.3932,-6263.2036 570.2503,-6250.3222 549.3965,-6240.4255\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"550.8461,-6237.2393 540.3112,-6236.1138 547.8449,-6243.5633 550.8461,-6237.2393\"/>\n",
       "</g>\n",
       "<!-- 5741842840 -->\n",
       "<g id=\"node101\" class=\"node\">\n",
       "<title>5741842840</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"655.1547,-6355 492.8453,-6355 492.8453,-6335 655.1547,-6335 655.1547,-6355\"/>\n",
       "<text text-anchor=\"middle\" x=\"574\" y=\"-6341.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">MkldnnConvolutionBackward</text>\n",
       "</g>\n",
       "<!-- 5741842840&#45;&gt;5741842672 -->\n",
       "<g id=\"edge100\" class=\"edge\">\n",
       "<title>5741842840&#45;&gt;5741842672</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M584.122,-6334.878C593.6177,-6325.3823 608.0206,-6310.9794 619.398,-6299.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"622.0976,-6301.8522 626.6938,-6292.3062 617.1478,-6296.9024 622.0976,-6301.8522\"/>\n",
       "</g>\n",
       "<!-- 5741842952 -->\n",
       "<g id=\"node102\" class=\"node\">\n",
       "<title>5741842952</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"620.8091,-6425 527.1909,-6425 527.1909,-6405 620.8091,-6405 620.8091,-6425\"/>\n",
       "<text text-anchor=\"middle\" x=\"574\" y=\"-6411.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ReluBackward1</text>\n",
       "</g>\n",
       "<!-- 5741842952&#45;&gt;5741842840 -->\n",
       "<g id=\"edge101\" class=\"edge\">\n",
       "<title>5741842952&#45;&gt;5741842840</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M574,-6404.9707C574,-6394.6786 574,-6378.3754 574,-6365.3639\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"577.5001,-6365.0107 574,-6355.0107 570.5001,-6365.0107 577.5001,-6365.0107\"/>\n",
       "</g>\n",
       "<!-- 5741843064 -->\n",
       "<g id=\"node103\" class=\"node\">\n",
       "<title>5741843064</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"713.1177,-6488 560.8823,-6488 560.8823,-6468 713.1177,-6468 713.1177,-6488\"/>\n",
       "<text text-anchor=\"middle\" x=\"637\" y=\"-6474.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">NativeBatchNormBackward</text>\n",
       "</g>\n",
       "<!-- 5741843064&#45;&gt;5741842952 -->\n",
       "<g id=\"edge102\" class=\"edge\">\n",
       "<title>5741843064&#45;&gt;5741842952</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M626.878,-6467.878C617.3823,-6458.3823 602.9794,-6443.9794 591.602,-6432.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"593.8522,-6429.9024 584.3062,-6425.3062 588.9024,-6434.8522 593.8522,-6429.9024\"/>\n",
       "</g>\n",
       "<!-- 5741843232 -->\n",
       "<g id=\"node104\" class=\"node\">\n",
       "<title>5741843232</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"655.1547,-6551 492.8453,-6551 492.8453,-6531 655.1547,-6531 655.1547,-6551\"/>\n",
       "<text text-anchor=\"middle\" x=\"574\" y=\"-6537.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">MkldnnConvolutionBackward</text>\n",
       "</g>\n",
       "<!-- 5741843232&#45;&gt;5741843064 -->\n",
       "<g id=\"edge103\" class=\"edge\">\n",
       "<title>5741843232&#45;&gt;5741843064</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M584.122,-6530.878C593.6177,-6521.3823 608.0206,-6506.9794 619.398,-6495.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"622.0976,-6497.8522 626.6938,-6488.3062 617.1478,-6492.9024 622.0976,-6497.8522\"/>\n",
       "</g>\n",
       "<!-- 5741843344 -->\n",
       "<g id=\"node105\" class=\"node\">\n",
       "<title>5741843344</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"620.8091,-6621 527.1909,-6621 527.1909,-6601 620.8091,-6601 620.8091,-6621\"/>\n",
       "<text text-anchor=\"middle\" x=\"574\" y=\"-6607.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ReluBackward1</text>\n",
       "</g>\n",
       "<!-- 5741843344&#45;&gt;5741843232 -->\n",
       "<g id=\"edge104\" class=\"edge\">\n",
       "<title>5741843344&#45;&gt;5741843232</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M574,-6600.9707C574,-6590.6786 574,-6574.3754 574,-6561.3639\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"577.5001,-6561.0107 574,-6551.0107 570.5001,-6561.0107 577.5001,-6561.0107\"/>\n",
       "</g>\n",
       "<!-- 5741843456 -->\n",
       "<g id=\"node106\" class=\"node\">\n",
       "<title>5741843456</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"713.1177,-6684 560.8823,-6684 560.8823,-6664 713.1177,-6664 713.1177,-6684\"/>\n",
       "<text text-anchor=\"middle\" x=\"637\" y=\"-6670.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">NativeBatchNormBackward</text>\n",
       "</g>\n",
       "<!-- 5741843456&#45;&gt;5741843344 -->\n",
       "<g id=\"edge105\" class=\"edge\">\n",
       "<title>5741843456&#45;&gt;5741843344</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M626.878,-6663.878C617.3823,-6654.3823 602.9794,-6639.9794 591.602,-6628.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"593.8522,-6625.9024 584.3062,-6621.3062 588.9024,-6630.8522 593.8522,-6625.9024\"/>\n",
       "</g>\n",
       "<!-- 5741843624 -->\n",
       "<g id=\"node107\" class=\"node\">\n",
       "<title>5741843624</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"655.1547,-6747 492.8453,-6747 492.8453,-6727 655.1547,-6727 655.1547,-6747\"/>\n",
       "<text text-anchor=\"middle\" x=\"574\" y=\"-6733.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">MkldnnConvolutionBackward</text>\n",
       "</g>\n",
       "<!-- 5741843624&#45;&gt;5741843456 -->\n",
       "<g id=\"edge106\" class=\"edge\">\n",
       "<title>5741843624&#45;&gt;5741843456</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M584.122,-6726.878C593.6177,-6717.3823 608.0206,-6702.9794 619.398,-6691.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"622.0976,-6693.8522 626.6938,-6684.3062 617.1478,-6688.9024 622.0976,-6693.8522\"/>\n",
       "</g>\n",
       "<!-- 5741842728 -->\n",
       "<g id=\"node108\" class=\"node\">\n",
       "<title>5741842728</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"511.8091,-6817 418.1909,-6817 418.1909,-6797 511.8091,-6797 511.8091,-6817\"/>\n",
       "<text text-anchor=\"middle\" x=\"465\" y=\"-6803.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ReluBackward1</text>\n",
       "</g>\n",
       "<!-- 5741842728&#45;&gt;5741842504 -->\n",
       "<g id=\"edge253\" class=\"edge\">\n",
       "<title>5741842728&#45;&gt;5741842504</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M465,-6796.9894C465,-6774.829 465,-6719.9497 465,-6674 465,-6674 465,-6674 465,-6345 465,-6306.5157 488.709,-6266.7842 504.7072,-6244.355\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"507.6667,-6246.2395 510.7986,-6236.1181 502.0385,-6242.0773 507.6667,-6246.2395\"/>\n",
       "</g>\n",
       "<!-- 5741842728&#45;&gt;5741843624 -->\n",
       "<g id=\"edge107\" class=\"edge\">\n",
       "<title>5741842728&#45;&gt;5741843624</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M480.617,-6796.9707C498.7478,-6785.3271 528.8582,-6765.9902 549.9741,-6752.4295\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"551.8889,-6755.3594 558.4119,-6747.0107 548.1063,-6749.4694 551.8889,-6755.3594\"/>\n",
       "</g>\n",
       "<!-- 5741843792 -->\n",
       "<g id=\"node109\" class=\"node\">\n",
       "<title>5741843792</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"510.8111,-6880 419.1889,-6880 419.1889,-6860 510.8111,-6860 510.8111,-6880\"/>\n",
       "<text text-anchor=\"middle\" x=\"465\" y=\"-6866.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">AddBackward0</text>\n",
       "</g>\n",
       "<!-- 5741843792&#45;&gt;5741842728 -->\n",
       "<g id=\"edge108\" class=\"edge\">\n",
       "<title>5741843792&#45;&gt;5741842728</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M465,-6859.878C465,-6851.2041 465,-6838.4355 465,-6827.6186\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"468.5001,-6827.3062 465,-6817.3062 461.5001,-6827.3062 468.5001,-6827.3062\"/>\n",
       "</g>\n",
       "<!-- 5741843960 -->\n",
       "<g id=\"node110\" class=\"node\">\n",
       "<title>5741843960</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"659.1177,-6936 506.8823,-6936 506.8823,-6916 659.1177,-6916 659.1177,-6936\"/>\n",
       "<text text-anchor=\"middle\" x=\"583\" y=\"-6922.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">NativeBatchNormBackward</text>\n",
       "</g>\n",
       "<!-- 5741843960&#45;&gt;5741843792 -->\n",
       "<g id=\"edge109\" class=\"edge\">\n",
       "<title>5741843960&#45;&gt;5741843792</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M561.904,-6915.9883C543.3932,-6907.2036 516.2503,-6894.3222 495.3965,-6884.4255\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"496.8461,-6881.2393 486.3112,-6880.1138 493.8449,-6887.5633 496.8461,-6881.2393\"/>\n",
       "</g>\n",
       "<!-- 5741844128 -->\n",
       "<g id=\"node111\" class=\"node\">\n",
       "<title>5741844128</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"601.1547,-6999 438.8453,-6999 438.8453,-6979 601.1547,-6979 601.1547,-6999\"/>\n",
       "<text text-anchor=\"middle\" x=\"520\" y=\"-6985.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">MkldnnConvolutionBackward</text>\n",
       "</g>\n",
       "<!-- 5741844128&#45;&gt;5741843960 -->\n",
       "<g id=\"edge110\" class=\"edge\">\n",
       "<title>5741844128&#45;&gt;5741843960</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M530.122,-6978.878C539.6177,-6969.3823 554.0206,-6954.9794 565.398,-6943.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"568.0976,-6945.8522 572.6938,-6936.3062 563.1478,-6940.9024 568.0976,-6945.8522\"/>\n",
       "</g>\n",
       "<!-- 5741844240 -->\n",
       "<g id=\"node112\" class=\"node\">\n",
       "<title>5741844240</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"566.8091,-7069 473.1909,-7069 473.1909,-7049 566.8091,-7049 566.8091,-7069\"/>\n",
       "<text text-anchor=\"middle\" x=\"520\" y=\"-7055.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ReluBackward1</text>\n",
       "</g>\n",
       "<!-- 5741844240&#45;&gt;5741844128 -->\n",
       "<g id=\"edge111\" class=\"edge\">\n",
       "<title>5741844240&#45;&gt;5741844128</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M520,-7048.9707C520,-7038.6786 520,-7022.3754 520,-7009.3639\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"523.5001,-7009.0107 520,-6999.0107 516.5001,-7009.0107 523.5001,-7009.0107\"/>\n",
       "</g>\n",
       "<!-- 5741844352 -->\n",
       "<g id=\"node113\" class=\"node\">\n",
       "<title>5741844352</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"659.1177,-7132 506.8823,-7132 506.8823,-7112 659.1177,-7112 659.1177,-7132\"/>\n",
       "<text text-anchor=\"middle\" x=\"583\" y=\"-7118.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">NativeBatchNormBackward</text>\n",
       "</g>\n",
       "<!-- 5741844352&#45;&gt;5741844240 -->\n",
       "<g id=\"edge112\" class=\"edge\">\n",
       "<title>5741844352&#45;&gt;5741844240</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M572.878,-7111.878C563.3823,-7102.3823 548.9794,-7087.9794 537.602,-7076.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"539.8522,-7073.9024 530.3062,-7069.3062 534.9024,-7078.8522 539.8522,-7073.9024\"/>\n",
       "</g>\n",
       "<!-- 5741844520 -->\n",
       "<g id=\"node114\" class=\"node\">\n",
       "<title>5741844520</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"601.1547,-7195 438.8453,-7195 438.8453,-7175 601.1547,-7175 601.1547,-7195\"/>\n",
       "<text text-anchor=\"middle\" x=\"520\" y=\"-7181.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">MkldnnConvolutionBackward</text>\n",
       "</g>\n",
       "<!-- 5741844520&#45;&gt;5741844352 -->\n",
       "<g id=\"edge113\" class=\"edge\">\n",
       "<title>5741844520&#45;&gt;5741844352</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M530.122,-7174.878C539.6177,-7165.3823 554.0206,-7150.9794 565.398,-7139.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"568.0976,-7141.8522 572.6938,-7132.3062 563.1478,-7136.9024 568.0976,-7141.8522\"/>\n",
       "</g>\n",
       "<!-- 5741844632 -->\n",
       "<g id=\"node115\" class=\"node\">\n",
       "<title>5741844632</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"566.8091,-7265 473.1909,-7265 473.1909,-7245 566.8091,-7245 566.8091,-7265\"/>\n",
       "<text text-anchor=\"middle\" x=\"520\" y=\"-7251.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ReluBackward1</text>\n",
       "</g>\n",
       "<!-- 5741844632&#45;&gt;5741844520 -->\n",
       "<g id=\"edge114\" class=\"edge\">\n",
       "<title>5741844632&#45;&gt;5741844520</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M520,-7244.9707C520,-7234.6786 520,-7218.3754 520,-7205.3639\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"523.5001,-7205.0107 520,-7195.0107 516.5001,-7205.0107 523.5001,-7205.0107\"/>\n",
       "</g>\n",
       "<!-- 5741844744 -->\n",
       "<g id=\"node116\" class=\"node\">\n",
       "<title>5741844744</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"659.1177,-7328 506.8823,-7328 506.8823,-7308 659.1177,-7308 659.1177,-7328\"/>\n",
       "<text text-anchor=\"middle\" x=\"583\" y=\"-7314.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">NativeBatchNormBackward</text>\n",
       "</g>\n",
       "<!-- 5741844744&#45;&gt;5741844632 -->\n",
       "<g id=\"edge115\" class=\"edge\">\n",
       "<title>5741844744&#45;&gt;5741844632</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M572.878,-7307.878C563.3823,-7298.3823 548.9794,-7283.9794 537.602,-7272.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"539.8522,-7269.9024 530.3062,-7265.3062 534.9024,-7274.8522 539.8522,-7269.9024\"/>\n",
       "</g>\n",
       "<!-- 5741844912 -->\n",
       "<g id=\"node117\" class=\"node\">\n",
       "<title>5741844912</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"601.1547,-7391 438.8453,-7391 438.8453,-7371 601.1547,-7371 601.1547,-7391\"/>\n",
       "<text text-anchor=\"middle\" x=\"520\" y=\"-7377.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">MkldnnConvolutionBackward</text>\n",
       "</g>\n",
       "<!-- 5741844912&#45;&gt;5741844744 -->\n",
       "<g id=\"edge116\" class=\"edge\">\n",
       "<title>5741844912&#45;&gt;5741844744</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M530.122,-7370.878C539.6177,-7361.3823 554.0206,-7346.9794 565.398,-7335.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"568.0976,-7337.8522 572.6938,-7328.3062 563.1478,-7332.9024 568.0976,-7337.8522\"/>\n",
       "</g>\n",
       "<!-- 5741844016 -->\n",
       "<g id=\"node118\" class=\"node\">\n",
       "<title>5741844016</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"457.8091,-7461 364.1909,-7461 364.1909,-7441 457.8091,-7441 457.8091,-7461\"/>\n",
       "<text text-anchor=\"middle\" x=\"411\" y=\"-7447.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ReluBackward1</text>\n",
       "</g>\n",
       "<!-- 5741844016&#45;&gt;5741843792 -->\n",
       "<g id=\"edge243\" class=\"edge\">\n",
       "<title>5741844016&#45;&gt;5741843792</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M411,-7440.9894C411,-7418.829 411,-7363.9497 411,-7318 411,-7318 411,-7318 411,-6989 411,-6950.5157 434.709,-6910.7842 450.7072,-6888.355\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"453.6667,-6890.2395 456.7986,-6880.1181 448.0385,-6886.0773 453.6667,-6890.2395\"/>\n",
       "</g>\n",
       "<!-- 5741844016&#45;&gt;5741844912 -->\n",
       "<g id=\"edge117\" class=\"edge\">\n",
       "<title>5741844016&#45;&gt;5741844912</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M426.617,-7440.9707C444.7478,-7429.3271 474.8582,-7409.9902 495.9741,-7396.4295\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"497.8889,-7399.3594 504.4119,-7391.0107 494.1063,-7393.4694 497.8889,-7399.3594\"/>\n",
       "</g>\n",
       "<!-- 5741845080 -->\n",
       "<g id=\"node119\" class=\"node\">\n",
       "<title>5741845080</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"456.8111,-7524 365.1889,-7524 365.1889,-7504 456.8111,-7504 456.8111,-7524\"/>\n",
       "<text text-anchor=\"middle\" x=\"411\" y=\"-7510.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">AddBackward0</text>\n",
       "</g>\n",
       "<!-- 5741845080&#45;&gt;5741844016 -->\n",
       "<g id=\"edge118\" class=\"edge\">\n",
       "<title>5741845080&#45;&gt;5741844016</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M411,-7503.878C411,-7495.2041 411,-7482.4355 411,-7471.6186\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"414.5001,-7471.3062 411,-7461.3062 407.5001,-7471.3062 414.5001,-7471.3062\"/>\n",
       "</g>\n",
       "<!-- 5741845248 -->\n",
       "<g id=\"node120\" class=\"node\">\n",
       "<title>5741845248</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"605.1177,-7580 452.8823,-7580 452.8823,-7560 605.1177,-7560 605.1177,-7580\"/>\n",
       "<text text-anchor=\"middle\" x=\"529\" y=\"-7566.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">NativeBatchNormBackward</text>\n",
       "</g>\n",
       "<!-- 5741845248&#45;&gt;5741845080 -->\n",
       "<g id=\"edge119\" class=\"edge\">\n",
       "<title>5741845248&#45;&gt;5741845080</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M507.904,-7559.9883C489.3932,-7551.2036 462.2503,-7538.3222 441.3965,-7528.4255\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"442.8461,-7525.2393 432.3112,-7524.1138 439.8449,-7531.5633 442.8461,-7525.2393\"/>\n",
       "</g>\n",
       "<!-- 5741845416 -->\n",
       "<g id=\"node121\" class=\"node\">\n",
       "<title>5741845416</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"547.1547,-7643 384.8453,-7643 384.8453,-7623 547.1547,-7623 547.1547,-7643\"/>\n",
       "<text text-anchor=\"middle\" x=\"466\" y=\"-7629.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">MkldnnConvolutionBackward</text>\n",
       "</g>\n",
       "<!-- 5741845416&#45;&gt;5741845248 -->\n",
       "<g id=\"edge120\" class=\"edge\">\n",
       "<title>5741845416&#45;&gt;5741845248</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M476.122,-7622.878C485.6177,-7613.3823 500.0206,-7598.9794 511.398,-7587.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"514.0976,-7589.8522 518.6938,-7580.3062 509.1478,-7584.9024 514.0976,-7589.8522\"/>\n",
       "</g>\n",
       "<!-- 5741845528 -->\n",
       "<g id=\"node122\" class=\"node\">\n",
       "<title>5741845528</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"512.8091,-7713 419.1909,-7713 419.1909,-7693 512.8091,-7693 512.8091,-7713\"/>\n",
       "<text text-anchor=\"middle\" x=\"466\" y=\"-7699.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ReluBackward1</text>\n",
       "</g>\n",
       "<!-- 5741845528&#45;&gt;5741845416 -->\n",
       "<g id=\"edge121\" class=\"edge\">\n",
       "<title>5741845528&#45;&gt;5741845416</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M466,-7692.9707C466,-7682.6786 466,-7666.3754 466,-7653.3639\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"469.5001,-7653.0107 466,-7643.0107 462.5001,-7653.0107 469.5001,-7653.0107\"/>\n",
       "</g>\n",
       "<!-- 5741845640 -->\n",
       "<g id=\"node123\" class=\"node\">\n",
       "<title>5741845640</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"605.1177,-7776 452.8823,-7776 452.8823,-7756 605.1177,-7756 605.1177,-7776\"/>\n",
       "<text text-anchor=\"middle\" x=\"529\" y=\"-7762.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">NativeBatchNormBackward</text>\n",
       "</g>\n",
       "<!-- 5741845640&#45;&gt;5741845528 -->\n",
       "<g id=\"edge122\" class=\"edge\">\n",
       "<title>5741845640&#45;&gt;5741845528</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M518.878,-7755.878C509.3823,-7746.3823 494.9794,-7731.9794 483.602,-7720.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"485.8522,-7717.9024 476.3062,-7713.3062 480.9024,-7722.8522 485.8522,-7717.9024\"/>\n",
       "</g>\n",
       "<!-- 5741845808 -->\n",
       "<g id=\"node124\" class=\"node\">\n",
       "<title>5741845808</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"547.1547,-7839 384.8453,-7839 384.8453,-7819 547.1547,-7819 547.1547,-7839\"/>\n",
       "<text text-anchor=\"middle\" x=\"466\" y=\"-7825.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">MkldnnConvolutionBackward</text>\n",
       "</g>\n",
       "<!-- 5741845808&#45;&gt;5741845640 -->\n",
       "<g id=\"edge123\" class=\"edge\">\n",
       "<title>5741845808&#45;&gt;5741845640</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M476.122,-7818.878C485.6177,-7809.3823 500.0206,-7794.9794 511.398,-7783.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"514.0976,-7785.8522 518.6938,-7776.3062 509.1478,-7780.9024 514.0976,-7785.8522\"/>\n",
       "</g>\n",
       "<!-- 5741845920 -->\n",
       "<g id=\"node125\" class=\"node\">\n",
       "<title>5741845920</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"512.8091,-7909 419.1909,-7909 419.1909,-7889 512.8091,-7889 512.8091,-7909\"/>\n",
       "<text text-anchor=\"middle\" x=\"466\" y=\"-7895.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ReluBackward1</text>\n",
       "</g>\n",
       "<!-- 5741845920&#45;&gt;5741845808 -->\n",
       "<g id=\"edge124\" class=\"edge\">\n",
       "<title>5741845920&#45;&gt;5741845808</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M466,-7888.9707C466,-7878.6786 466,-7862.3754 466,-7849.3639\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"469.5001,-7849.0107 466,-7839.0107 462.5001,-7849.0107 469.5001,-7849.0107\"/>\n",
       "</g>\n",
       "<!-- 5741846032 -->\n",
       "<g id=\"node126\" class=\"node\">\n",
       "<title>5741846032</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"605.1177,-7972 452.8823,-7972 452.8823,-7952 605.1177,-7952 605.1177,-7972\"/>\n",
       "<text text-anchor=\"middle\" x=\"529\" y=\"-7958.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">NativeBatchNormBackward</text>\n",
       "</g>\n",
       "<!-- 5741846032&#45;&gt;5741845920 -->\n",
       "<g id=\"edge125\" class=\"edge\">\n",
       "<title>5741846032&#45;&gt;5741845920</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M518.878,-7951.878C509.3823,-7942.3823 494.9794,-7927.9794 483.602,-7916.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"485.8522,-7913.9024 476.3062,-7909.3062 480.9024,-7918.8522 485.8522,-7913.9024\"/>\n",
       "</g>\n",
       "<!-- 5741846200 -->\n",
       "<g id=\"node127\" class=\"node\">\n",
       "<title>5741846200</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"547.1547,-8035 384.8453,-8035 384.8453,-8015 547.1547,-8015 547.1547,-8035\"/>\n",
       "<text text-anchor=\"middle\" x=\"466\" y=\"-8021.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">MkldnnConvolutionBackward</text>\n",
       "</g>\n",
       "<!-- 5741846200&#45;&gt;5741846032 -->\n",
       "<g id=\"edge126\" class=\"edge\">\n",
       "<title>5741846200&#45;&gt;5741846032</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M476.122,-8014.878C485.6177,-8005.3823 500.0206,-7990.9794 511.398,-7979.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"514.0976,-7981.8522 518.6938,-7972.3062 509.1478,-7976.9024 514.0976,-7981.8522\"/>\n",
       "</g>\n",
       "<!-- 5741845304 -->\n",
       "<g id=\"node128\" class=\"node\">\n",
       "<title>5741845304</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"403.8091,-8105 310.1909,-8105 310.1909,-8085 403.8091,-8085 403.8091,-8105\"/>\n",
       "<text text-anchor=\"middle\" x=\"357\" y=\"-8091.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ReluBackward1</text>\n",
       "</g>\n",
       "<!-- 5741845304&#45;&gt;5741845080 -->\n",
       "<g id=\"edge233\" class=\"edge\">\n",
       "<title>5741845304&#45;&gt;5741845080</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M357,-8084.9894C357,-8062.829 357,-8007.9497 357,-7962 357,-7962 357,-7962 357,-7633 357,-7594.5157 380.709,-7554.7842 396.7072,-7532.355\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"399.6667,-7534.2395 402.7986,-7524.1181 394.0385,-7530.0773 399.6667,-7534.2395\"/>\n",
       "</g>\n",
       "<!-- 5741845304&#45;&gt;5741846200 -->\n",
       "<g id=\"edge127\" class=\"edge\">\n",
       "<title>5741845304&#45;&gt;5741846200</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M372.617,-8084.9707C390.7478,-8073.3271 420.8582,-8053.9902 441.9741,-8040.4295\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"443.8889,-8043.3594 450.4119,-8035.0107 440.1063,-8037.4694 443.8889,-8043.3594\"/>\n",
       "</g>\n",
       "<!-- 5741846368 -->\n",
       "<g id=\"node129\" class=\"node\">\n",
       "<title>5741846368</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"402.8111,-8168 311.1889,-8168 311.1889,-8148 402.8111,-8148 402.8111,-8168\"/>\n",
       "<text text-anchor=\"middle\" x=\"357\" y=\"-8154.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">AddBackward0</text>\n",
       "</g>\n",
       "<!-- 5741846368&#45;&gt;5741845304 -->\n",
       "<g id=\"edge128\" class=\"edge\">\n",
       "<title>5741846368&#45;&gt;5741845304</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M357,-8147.878C357,-8139.2041 357,-8126.4355 357,-8115.6186\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"360.5001,-8115.3062 357,-8105.3062 353.5001,-8115.3062 360.5001,-8115.3062\"/>\n",
       "</g>\n",
       "<!-- 5741854792 -->\n",
       "<g id=\"node130\" class=\"node\">\n",
       "<title>5741854792</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"551.1177,-8224 398.8823,-8224 398.8823,-8204 551.1177,-8204 551.1177,-8224\"/>\n",
       "<text text-anchor=\"middle\" x=\"475\" y=\"-8210.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">NativeBatchNormBackward</text>\n",
       "</g>\n",
       "<!-- 5741854792&#45;&gt;5741846368 -->\n",
       "<g id=\"edge129\" class=\"edge\">\n",
       "<title>5741854792&#45;&gt;5741846368</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M453.904,-8203.9883C435.3932,-8195.2036 408.2503,-8182.3222 387.3965,-8172.4255\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"388.8461,-8169.2393 378.3112,-8168.1138 385.8449,-8175.5633 388.8461,-8169.2393\"/>\n",
       "</g>\n",
       "<!-- 5741854960 -->\n",
       "<g id=\"node131\" class=\"node\">\n",
       "<title>5741854960</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"493.1547,-8287 330.8453,-8287 330.8453,-8267 493.1547,-8267 493.1547,-8287\"/>\n",
       "<text text-anchor=\"middle\" x=\"412\" y=\"-8273.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">MkldnnConvolutionBackward</text>\n",
       "</g>\n",
       "<!-- 5741854960&#45;&gt;5741854792 -->\n",
       "<g id=\"edge130\" class=\"edge\">\n",
       "<title>5741854960&#45;&gt;5741854792</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M422.122,-8266.878C431.6177,-8257.3823 446.0206,-8242.9794 457.398,-8231.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"460.0976,-8233.8522 464.6938,-8224.3062 455.1478,-8228.9024 460.0976,-8233.8522\"/>\n",
       "</g>\n",
       "<!-- 5741855072 -->\n",
       "<g id=\"node132\" class=\"node\">\n",
       "<title>5741855072</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"458.8091,-8357 365.1909,-8357 365.1909,-8337 458.8091,-8337 458.8091,-8357\"/>\n",
       "<text text-anchor=\"middle\" x=\"412\" y=\"-8343.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ReluBackward1</text>\n",
       "</g>\n",
       "<!-- 5741855072&#45;&gt;5741854960 -->\n",
       "<g id=\"edge131\" class=\"edge\">\n",
       "<title>5741855072&#45;&gt;5741854960</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M412,-8336.9707C412,-8326.6786 412,-8310.3754 412,-8297.3639\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"415.5001,-8297.0107 412,-8287.0107 408.5001,-8297.0107 415.5001,-8297.0107\"/>\n",
       "</g>\n",
       "<!-- 5741855184 -->\n",
       "<g id=\"node133\" class=\"node\">\n",
       "<title>5741855184</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"585.1177,-8420 432.8823,-8420 432.8823,-8400 585.1177,-8400 585.1177,-8420\"/>\n",
       "<text text-anchor=\"middle\" x=\"509\" y=\"-8406.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">NativeBatchNormBackward</text>\n",
       "</g>\n",
       "<!-- 5741855184&#45;&gt;5741855072 -->\n",
       "<g id=\"edge132\" class=\"edge\">\n",
       "<title>5741855184&#45;&gt;5741855072</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M493.4153,-8399.878C478.0009,-8389.8666 454.1878,-8374.4003 436.2903,-8362.7762\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"437.8389,-8359.6086 427.5461,-8357.0969 434.0261,-8365.4791 437.8389,-8359.6086\"/>\n",
       "</g>\n",
       "<!-- 5741855352 -->\n",
       "<g id=\"node134\" class=\"node\">\n",
       "<title>5741855352</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"527.1547,-8483 364.8453,-8483 364.8453,-8463 527.1547,-8463 527.1547,-8483\"/>\n",
       "<text text-anchor=\"middle\" x=\"446\" y=\"-8469.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">MkldnnConvolutionBackward</text>\n",
       "</g>\n",
       "<!-- 5741855352&#45;&gt;5741855184 -->\n",
       "<g id=\"edge133\" class=\"edge\">\n",
       "<title>5741855352&#45;&gt;5741855184</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M456.122,-8462.878C465.6177,-8453.3823 480.0206,-8438.9794 491.398,-8427.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"494.0976,-8429.8522 498.6938,-8420.3062 489.1478,-8424.9024 494.0976,-8429.8522\"/>\n",
       "</g>\n",
       "<!-- 5741855464 -->\n",
       "<g id=\"node135\" class=\"node\">\n",
       "<title>5741855464</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"492.8091,-8553 399.1909,-8553 399.1909,-8533 492.8091,-8533 492.8091,-8553\"/>\n",
       "<text text-anchor=\"middle\" x=\"446\" y=\"-8539.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ReluBackward1</text>\n",
       "</g>\n",
       "<!-- 5741855464&#45;&gt;5741855352 -->\n",
       "<g id=\"edge134\" class=\"edge\">\n",
       "<title>5741855464&#45;&gt;5741855352</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M446,-8532.9707C446,-8522.6786 446,-8506.3754 446,-8493.3639\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"449.5001,-8493.0107 446,-8483.0107 442.5001,-8493.0107 449.5001,-8493.0107\"/>\n",
       "</g>\n",
       "<!-- 5741855576 -->\n",
       "<g id=\"node136\" class=\"node\">\n",
       "<title>5741855576</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"619.1177,-8616 466.8823,-8616 466.8823,-8596 619.1177,-8596 619.1177,-8616\"/>\n",
       "<text text-anchor=\"middle\" x=\"543\" y=\"-8602.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">NativeBatchNormBackward</text>\n",
       "</g>\n",
       "<!-- 5741855576&#45;&gt;5741855464 -->\n",
       "<g id=\"edge135\" class=\"edge\">\n",
       "<title>5741855576&#45;&gt;5741855464</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M527.4153,-8595.878C512.0009,-8585.8666 488.1878,-8570.4003 470.2903,-8558.7762\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"471.8389,-8555.6086 461.5461,-8553.0969 468.0261,-8561.4791 471.8389,-8555.6086\"/>\n",
       "</g>\n",
       "<!-- 5741855744 -->\n",
       "<g id=\"node137\" class=\"node\">\n",
       "<title>5741855744</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"561.1547,-8679 398.8453,-8679 398.8453,-8659 561.1547,-8659 561.1547,-8679\"/>\n",
       "<text text-anchor=\"middle\" x=\"480\" y=\"-8665.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">MkldnnConvolutionBackward</text>\n",
       "</g>\n",
       "<!-- 5741855744&#45;&gt;5741855576 -->\n",
       "<g id=\"edge136\" class=\"edge\">\n",
       "<title>5741855744&#45;&gt;5741855576</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M490.122,-8658.878C499.6177,-8649.3823 514.0206,-8634.9794 525.398,-8623.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"528.0976,-8625.8522 532.6938,-8616.3062 523.1478,-8620.9024 528.0976,-8625.8522\"/>\n",
       "</g>\n",
       "<!-- 5741855856 -->\n",
       "<g id=\"node138\" class=\"node\">\n",
       "<title>5741855856</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"435.8091,-8749 342.1909,-8749 342.1909,-8729 435.8091,-8729 435.8091,-8749\"/>\n",
       "<text text-anchor=\"middle\" x=\"389\" y=\"-8735.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ReluBackward1</text>\n",
       "</g>\n",
       "<!-- 5741855856&#45;&gt;5741855744 -->\n",
       "<g id=\"edge137\" class=\"edge\">\n",
       "<title>5741855856&#45;&gt;5741855744</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M402.0381,-8728.9707C416.9045,-8717.535 441.4182,-8698.6783 458.9902,-8685.1614\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"461.1938,-8687.882 466.9861,-8679.0107 456.9258,-8682.3336 461.1938,-8687.882\"/>\n",
       "</g>\n",
       "<!-- 5660119448 -->\n",
       "<g id=\"node217\" class=\"node\">\n",
       "<title>5660119448</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"380.1547,-8679 217.8453,-8679 217.8453,-8659 380.1547,-8659 380.1547,-8679\"/>\n",
       "<text text-anchor=\"middle\" x=\"299\" y=\"-8665.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">MkldnnConvolutionBackward</text>\n",
       "</g>\n",
       "<!-- 5741855856&#45;&gt;5660119448 -->\n",
       "<g id=\"edge220\" class=\"edge\">\n",
       "<title>5741855856&#45;&gt;5660119448</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M376.1052,-8728.9707C361.4022,-8717.535 337.1578,-8698.6783 319.7789,-8685.1614\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"321.9132,-8682.3874 311.8709,-8679.0107 317.6156,-8687.9129 321.9132,-8682.3874\"/>\n",
       "</g>\n",
       "<!-- 5741855968 -->\n",
       "<g id=\"node139\" class=\"node\">\n",
       "<title>5741855968</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"434.8111,-8812 343.1889,-8812 343.1889,-8792 434.8111,-8792 434.8111,-8812\"/>\n",
       "<text text-anchor=\"middle\" x=\"389\" y=\"-8798.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">AddBackward0</text>\n",
       "</g>\n",
       "<!-- 5741855968&#45;&gt;5741855856 -->\n",
       "<g id=\"edge138\" class=\"edge\">\n",
       "<title>5741855968&#45;&gt;5741855856</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M389,-8791.878C389,-8783.2041 389,-8770.4355 389,-8759.6186\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"392.5001,-8759.3062 389,-8749.3062 385.5001,-8759.3062 392.5001,-8759.3062\"/>\n",
       "</g>\n",
       "<!-- 5741856136 -->\n",
       "<g id=\"node140\" class=\"node\">\n",
       "<title>5741856136</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"583.1177,-8868 430.8823,-8868 430.8823,-8848 583.1177,-8848 583.1177,-8868\"/>\n",
       "<text text-anchor=\"middle\" x=\"507\" y=\"-8854.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">NativeBatchNormBackward</text>\n",
       "</g>\n",
       "<!-- 5741856136&#45;&gt;5741855968 -->\n",
       "<g id=\"edge139\" class=\"edge\">\n",
       "<title>5741856136&#45;&gt;5741855968</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M485.904,-8847.9883C467.3932,-8839.2036 440.2503,-8826.3222 419.3965,-8816.4255\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"420.8461,-8813.2393 410.3112,-8812.1138 417.8449,-8819.5633 420.8461,-8813.2393\"/>\n",
       "</g>\n",
       "<!-- 5741856304 -->\n",
       "<g id=\"node141\" class=\"node\">\n",
       "<title>5741856304</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"525.1547,-8931 362.8453,-8931 362.8453,-8911 525.1547,-8911 525.1547,-8931\"/>\n",
       "<text text-anchor=\"middle\" x=\"444\" y=\"-8917.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">MkldnnConvolutionBackward</text>\n",
       "</g>\n",
       "<!-- 5741856304&#45;&gt;5741856136 -->\n",
       "<g id=\"edge140\" class=\"edge\">\n",
       "<title>5741856304&#45;&gt;5741856136</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M454.122,-8910.878C463.6177,-8901.3823 478.0206,-8886.9794 489.398,-8875.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"492.0976,-8877.8522 496.6938,-8868.3062 487.1478,-8872.9024 492.0976,-8877.8522\"/>\n",
       "</g>\n",
       "<!-- 5741856416 -->\n",
       "<g id=\"node142\" class=\"node\">\n",
       "<title>5741856416</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"490.8091,-9001 397.1909,-9001 397.1909,-8981 490.8091,-8981 490.8091,-9001\"/>\n",
       "<text text-anchor=\"middle\" x=\"444\" y=\"-8987.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ReluBackward1</text>\n",
       "</g>\n",
       "<!-- 5741856416&#45;&gt;5741856304 -->\n",
       "<g id=\"edge141\" class=\"edge\">\n",
       "<title>5741856416&#45;&gt;5741856304</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M444,-8980.9707C444,-8970.6786 444,-8954.3754 444,-8941.3639\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"447.5001,-8941.0107 444,-8931.0107 440.5001,-8941.0107 447.5001,-8941.0107\"/>\n",
       "</g>\n",
       "<!-- 5741856528 -->\n",
       "<g id=\"node143\" class=\"node\">\n",
       "<title>5741856528</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"583.1177,-9064 430.8823,-9064 430.8823,-9044 583.1177,-9044 583.1177,-9064\"/>\n",
       "<text text-anchor=\"middle\" x=\"507\" y=\"-9050.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">NativeBatchNormBackward</text>\n",
       "</g>\n",
       "<!-- 5741856528&#45;&gt;5741856416 -->\n",
       "<g id=\"edge142\" class=\"edge\">\n",
       "<title>5741856528&#45;&gt;5741856416</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M496.878,-9043.878C487.3823,-9034.3823 472.9794,-9019.9794 461.602,-9008.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"463.8522,-9005.9024 454.3062,-9001.3062 458.9024,-9010.8522 463.8522,-9005.9024\"/>\n",
       "</g>\n",
       "<!-- 5741856696 -->\n",
       "<g id=\"node144\" class=\"node\">\n",
       "<title>5741856696</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"525.1547,-9127 362.8453,-9127 362.8453,-9107 525.1547,-9107 525.1547,-9127\"/>\n",
       "<text text-anchor=\"middle\" x=\"444\" y=\"-9113.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">MkldnnConvolutionBackward</text>\n",
       "</g>\n",
       "<!-- 5741856696&#45;&gt;5741856528 -->\n",
       "<g id=\"edge143\" class=\"edge\">\n",
       "<title>5741856696&#45;&gt;5741856528</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M454.122,-9106.878C463.6177,-9097.3823 478.0206,-9082.9794 489.398,-9071.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"492.0976,-9073.8522 496.6938,-9064.3062 487.1478,-9068.9024 492.0976,-9073.8522\"/>\n",
       "</g>\n",
       "<!-- 5741856808 -->\n",
       "<g id=\"node145\" class=\"node\">\n",
       "<title>5741856808</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"490.8091,-9197 397.1909,-9197 397.1909,-9177 490.8091,-9177 490.8091,-9197\"/>\n",
       "<text text-anchor=\"middle\" x=\"444\" y=\"-9183.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ReluBackward1</text>\n",
       "</g>\n",
       "<!-- 5741856808&#45;&gt;5741856696 -->\n",
       "<g id=\"edge144\" class=\"edge\">\n",
       "<title>5741856808&#45;&gt;5741856696</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M444,-9176.9707C444,-9166.6786 444,-9150.3754 444,-9137.3639\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"447.5001,-9137.0107 444,-9127.0107 440.5001,-9137.0107 447.5001,-9137.0107\"/>\n",
       "</g>\n",
       "<!-- 5741856920 -->\n",
       "<g id=\"node146\" class=\"node\">\n",
       "<title>5741856920</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"583.1177,-9260 430.8823,-9260 430.8823,-9240 583.1177,-9240 583.1177,-9260\"/>\n",
       "<text text-anchor=\"middle\" x=\"507\" y=\"-9246.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">NativeBatchNormBackward</text>\n",
       "</g>\n",
       "<!-- 5741856920&#45;&gt;5741856808 -->\n",
       "<g id=\"edge145\" class=\"edge\">\n",
       "<title>5741856920&#45;&gt;5741856808</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M496.878,-9239.878C487.3823,-9230.3823 472.9794,-9215.9794 461.602,-9204.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"463.8522,-9201.9024 454.3062,-9197.3062 458.9024,-9206.8522 463.8522,-9201.9024\"/>\n",
       "</g>\n",
       "<!-- 5660119840 -->\n",
       "<g id=\"node147\" class=\"node\">\n",
       "<title>5660119840</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"525.1547,-9323 362.8453,-9323 362.8453,-9303 525.1547,-9303 525.1547,-9323\"/>\n",
       "<text text-anchor=\"middle\" x=\"444\" y=\"-9309.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">MkldnnConvolutionBackward</text>\n",
       "</g>\n",
       "<!-- 5660119840&#45;&gt;5741856920 -->\n",
       "<g id=\"edge146\" class=\"edge\">\n",
       "<title>5660119840&#45;&gt;5741856920</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M454.122,-9302.878C463.6177,-9293.3823 478.0206,-9278.9794 489.398,-9267.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"492.0976,-9269.8522 496.6938,-9260.3062 487.1478,-9264.9024 492.0976,-9269.8522\"/>\n",
       "</g>\n",
       "<!-- 5741856192 -->\n",
       "<g id=\"node148\" class=\"node\">\n",
       "<title>5741856192</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"382.8091,-9393 289.1909,-9393 289.1909,-9373 382.8091,-9373 382.8091,-9393\"/>\n",
       "<text text-anchor=\"middle\" x=\"336\" y=\"-9379.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ReluBackward1</text>\n",
       "</g>\n",
       "<!-- 5741856192&#45;&gt;5741855968 -->\n",
       "<g id=\"edge208\" class=\"edge\">\n",
       "<title>5741856192&#45;&gt;5741855968</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M335.8733,-9372.9896C335.6043,-9350.8296 335,-9295.951 335,-9250 335,-9250 335,-9250 335,-8921 335,-8882.5157 358.709,-8842.7842 374.7072,-8820.355\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"377.6667,-8822.2395 380.7986,-8812.1181 372.0385,-8818.0773 377.6667,-8822.2395\"/>\n",
       "</g>\n",
       "<!-- 5741856192&#45;&gt;5660119840 -->\n",
       "<g id=\"edge147\" class=\"edge\">\n",
       "<title>5741856192&#45;&gt;5660119840</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M351.4738,-9372.9707C369.358,-9361.3791 399.0062,-9342.1627 419.9138,-9328.6114\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"422.067,-9331.3867 428.5549,-9323.0107 418.2597,-9325.5126 422.067,-9331.3867\"/>\n",
       "</g>\n",
       "<!-- 5660119336 -->\n",
       "<g id=\"node149\" class=\"node\">\n",
       "<title>5660119336</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"381.8111,-9456 290.1889,-9456 290.1889,-9436 381.8111,-9436 381.8111,-9456\"/>\n",
       "<text text-anchor=\"middle\" x=\"336\" y=\"-9442.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">AddBackward0</text>\n",
       "</g>\n",
       "<!-- 5660119336&#45;&gt;5741856192 -->\n",
       "<g id=\"edge148\" class=\"edge\">\n",
       "<title>5660119336&#45;&gt;5741856192</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M336,-9435.878C336,-9427.2041 336,-9414.4355 336,-9403.6186\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"339.5001,-9403.3062 336,-9393.3062 332.5001,-9403.3062 339.5001,-9403.3062\"/>\n",
       "</g>\n",
       "<!-- 5660119504 -->\n",
       "<g id=\"node150\" class=\"node\">\n",
       "<title>5660119504</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"530.1177,-9512 377.8823,-9512 377.8823,-9492 530.1177,-9492 530.1177,-9512\"/>\n",
       "<text text-anchor=\"middle\" x=\"454\" y=\"-9498.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">NativeBatchNormBackward</text>\n",
       "</g>\n",
       "<!-- 5660119504&#45;&gt;5660119336 -->\n",
       "<g id=\"edge149\" class=\"edge\">\n",
       "<title>5660119504&#45;&gt;5660119336</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M432.904,-9491.9883C414.3932,-9483.2036 387.2503,-9470.3222 366.3965,-9460.4255\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"367.8461,-9457.2393 357.3112,-9456.1138 364.8449,-9463.5633 367.8461,-9457.2393\"/>\n",
       "</g>\n",
       "<!-- 5741857088 -->\n",
       "<g id=\"node151\" class=\"node\">\n",
       "<title>5741857088</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"472.1547,-9575 309.8453,-9575 309.8453,-9555 472.1547,-9555 472.1547,-9575\"/>\n",
       "<text text-anchor=\"middle\" x=\"391\" y=\"-9561.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">MkldnnConvolutionBackward</text>\n",
       "</g>\n",
       "<!-- 5741857088&#45;&gt;5660119504 -->\n",
       "<g id=\"edge150\" class=\"edge\">\n",
       "<title>5741857088&#45;&gt;5660119504</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M401.122,-9554.878C410.6177,-9545.3823 425.0206,-9530.9794 436.398,-9519.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"439.0976,-9521.8522 443.6938,-9512.3062 434.1478,-9516.9024 439.0976,-9521.8522\"/>\n",
       "</g>\n",
       "<!-- 5741857200 -->\n",
       "<g id=\"node152\" class=\"node\">\n",
       "<title>5741857200</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"437.8091,-9645 344.1909,-9645 344.1909,-9625 437.8091,-9625 437.8091,-9645\"/>\n",
       "<text text-anchor=\"middle\" x=\"391\" y=\"-9631.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ReluBackward1</text>\n",
       "</g>\n",
       "<!-- 5741857200&#45;&gt;5741857088 -->\n",
       "<g id=\"edge151\" class=\"edge\">\n",
       "<title>5741857200&#45;&gt;5741857088</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M391,-9624.9707C391,-9614.6786 391,-9598.3754 391,-9585.3639\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"394.5001,-9585.0107 391,-9575.0107 387.5001,-9585.0107 394.5001,-9585.0107\"/>\n",
       "</g>\n",
       "<!-- 5741857312 -->\n",
       "<g id=\"node153\" class=\"node\">\n",
       "<title>5741857312</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"530.1177,-9708 377.8823,-9708 377.8823,-9688 530.1177,-9688 530.1177,-9708\"/>\n",
       "<text text-anchor=\"middle\" x=\"454\" y=\"-9694.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">NativeBatchNormBackward</text>\n",
       "</g>\n",
       "<!-- 5741857312&#45;&gt;5741857200 -->\n",
       "<g id=\"edge152\" class=\"edge\">\n",
       "<title>5741857312&#45;&gt;5741857200</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M443.878,-9687.878C434.3823,-9678.3823 419.9794,-9663.9794 408.602,-9652.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"410.8522,-9649.9024 401.3062,-9645.3062 405.9024,-9654.8522 410.8522,-9649.9024\"/>\n",
       "</g>\n",
       "<!-- 5741857424 -->\n",
       "<g id=\"node154\" class=\"node\">\n",
       "<title>5741857424</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"472.1547,-9771 309.8453,-9771 309.8453,-9751 472.1547,-9751 472.1547,-9771\"/>\n",
       "<text text-anchor=\"middle\" x=\"391\" y=\"-9757.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">MkldnnConvolutionBackward</text>\n",
       "</g>\n",
       "<!-- 5741857424&#45;&gt;5741857312 -->\n",
       "<g id=\"edge153\" class=\"edge\">\n",
       "<title>5741857424&#45;&gt;5741857312</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M401.122,-9750.878C410.6177,-9741.3823 425.0206,-9726.9794 436.398,-9715.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"439.0976,-9717.8522 443.6938,-9708.3062 434.1478,-9712.9024 439.0976,-9717.8522\"/>\n",
       "</g>\n",
       "<!-- 5741857536 -->\n",
       "<g id=\"node155\" class=\"node\">\n",
       "<title>5741857536</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"437.8091,-9841 344.1909,-9841 344.1909,-9821 437.8091,-9821 437.8091,-9841\"/>\n",
       "<text text-anchor=\"middle\" x=\"391\" y=\"-9827.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ReluBackward1</text>\n",
       "</g>\n",
       "<!-- 5741857536&#45;&gt;5741857424 -->\n",
       "<g id=\"edge154\" class=\"edge\">\n",
       "<title>5741857536&#45;&gt;5741857424</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M391,-9820.9707C391,-9810.6786 391,-9794.3754 391,-9781.3639\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"394.5001,-9781.0107 391,-9771.0107 387.5001,-9781.0107 394.5001,-9781.0107\"/>\n",
       "</g>\n",
       "<!-- 5741857648 -->\n",
       "<g id=\"node156\" class=\"node\">\n",
       "<title>5741857648</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"530.1177,-9904 377.8823,-9904 377.8823,-9884 530.1177,-9884 530.1177,-9904\"/>\n",
       "<text text-anchor=\"middle\" x=\"454\" y=\"-9890.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">NativeBatchNormBackward</text>\n",
       "</g>\n",
       "<!-- 5741857648&#45;&gt;5741857536 -->\n",
       "<g id=\"edge155\" class=\"edge\">\n",
       "<title>5741857648&#45;&gt;5741857536</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M443.878,-9883.878C434.3823,-9874.3823 419.9794,-9859.9794 408.602,-9848.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"410.8522,-9845.9024 401.3062,-9841.3062 405.9024,-9850.8522 410.8522,-9845.9024\"/>\n",
       "</g>\n",
       "<!-- 5741857816 -->\n",
       "<g id=\"node157\" class=\"node\">\n",
       "<title>5741857816</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"472.1547,-9967 309.8453,-9967 309.8453,-9947 472.1547,-9947 472.1547,-9967\"/>\n",
       "<text text-anchor=\"middle\" x=\"391\" y=\"-9953.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">MkldnnConvolutionBackward</text>\n",
       "</g>\n",
       "<!-- 5741857816&#45;&gt;5741857648 -->\n",
       "<g id=\"edge156\" class=\"edge\">\n",
       "<title>5741857816&#45;&gt;5741857648</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M401.122,-9946.878C410.6177,-9937.3823 425.0206,-9922.9794 436.398,-9911.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"439.0976,-9913.8522 443.6938,-9904.3062 434.1478,-9908.9024 439.0976,-9913.8522\"/>\n",
       "</g>\n",
       "<!-- 5660119112 -->\n",
       "<g id=\"node158\" class=\"node\">\n",
       "<title>5660119112</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"329.8091,-10037 236.1909,-10037 236.1909,-10017 329.8091,-10017 329.8091,-10037\"/>\n",
       "<text text-anchor=\"middle\" x=\"283\" y=\"-10023.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ReluBackward1</text>\n",
       "</g>\n",
       "<!-- 5660119112&#45;&gt;5660119336 -->\n",
       "<g id=\"edge198\" class=\"edge\">\n",
       "<title>5660119112&#45;&gt;5660119336</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M282.8733,-10016.9896C282.6043,-9994.8296 282,-9939.951 282,-9894 282,-9894 282,-9894 282,-9565 282,-9526.5157 305.709,-9486.7842 321.7072,-9464.355\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"324.6667,-9466.2395 327.7986,-9456.1181 319.0385,-9462.0773 324.6667,-9466.2395\"/>\n",
       "</g>\n",
       "<!-- 5660119112&#45;&gt;5741857816 -->\n",
       "<g id=\"edge157\" class=\"edge\">\n",
       "<title>5660119112&#45;&gt;5741857816</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M298.4738,-10016.9707C316.358,-10005.3791 346.0062,-9986.1627 366.9138,-9972.6114\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"369.067,-9975.3867 375.5549,-9967.0107 365.2597,-9969.5126 369.067,-9975.3867\"/>\n",
       "</g>\n",
       "<!-- 5741857984 -->\n",
       "<g id=\"node159\" class=\"node\">\n",
       "<title>5741857984</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"328.8111,-10100 237.1889,-10100 237.1889,-10080 328.8111,-10080 328.8111,-10100\"/>\n",
       "<text text-anchor=\"middle\" x=\"283\" y=\"-10086.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">AddBackward0</text>\n",
       "</g>\n",
       "<!-- 5741857984&#45;&gt;5660119112 -->\n",
       "<g id=\"edge158\" class=\"edge\">\n",
       "<title>5741857984&#45;&gt;5660119112</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M283,-10079.878C283,-10071.2041 283,-10058.4355 283,-10047.6186\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"286.5001,-10047.3062 283,-10037.3062 279.5001,-10047.3062 286.5001,-10047.3062\"/>\n",
       "</g>\n",
       "<!-- 5741858152 -->\n",
       "<g id=\"node160\" class=\"node\">\n",
       "<title>5741858152</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"477.1177,-10156 324.8823,-10156 324.8823,-10136 477.1177,-10136 477.1177,-10156\"/>\n",
       "<text text-anchor=\"middle\" x=\"401\" y=\"-10142.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">NativeBatchNormBackward</text>\n",
       "</g>\n",
       "<!-- 5741858152&#45;&gt;5741857984 -->\n",
       "<g id=\"edge159\" class=\"edge\">\n",
       "<title>5741858152&#45;&gt;5741857984</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M379.904,-10135.9883C361.3932,-10127.2036 334.2503,-10114.3222 313.3965,-10104.4255\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"314.8461,-10101.2393 304.3112,-10100.1138 311.8449,-10107.5633 314.8461,-10101.2393\"/>\n",
       "</g>\n",
       "<!-- 5741858320 -->\n",
       "<g id=\"node161\" class=\"node\">\n",
       "<title>5741858320</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"419.1547,-10219 256.8453,-10219 256.8453,-10199 419.1547,-10199 419.1547,-10219\"/>\n",
       "<text text-anchor=\"middle\" x=\"338\" y=\"-10205.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">MkldnnConvolutionBackward</text>\n",
       "</g>\n",
       "<!-- 5741858320&#45;&gt;5741858152 -->\n",
       "<g id=\"edge160\" class=\"edge\">\n",
       "<title>5741858320&#45;&gt;5741858152</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M348.122,-10198.878C357.6177,-10189.3823 372.0206,-10174.9794 383.398,-10163.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"386.0976,-10165.8522 390.6938,-10156.3062 381.1478,-10160.9024 386.0976,-10165.8522\"/>\n",
       "</g>\n",
       "<!-- 5741858432 -->\n",
       "<g id=\"node162\" class=\"node\">\n",
       "<title>5741858432</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"384.8091,-10289 291.1909,-10289 291.1909,-10269 384.8091,-10269 384.8091,-10289\"/>\n",
       "<text text-anchor=\"middle\" x=\"338\" y=\"-10275.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ReluBackward1</text>\n",
       "</g>\n",
       "<!-- 5741858432&#45;&gt;5741858320 -->\n",
       "<g id=\"edge161\" class=\"edge\">\n",
       "<title>5741858432&#45;&gt;5741858320</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M338,-10268.9707C338,-10258.6786 338,-10242.3754 338,-10229.3639\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"341.5001,-10229.0107 338,-10219.0107 334.5001,-10229.0107 341.5001,-10229.0107\"/>\n",
       "</g>\n",
       "<!-- 5741858544 -->\n",
       "<g id=\"node163\" class=\"node\">\n",
       "<title>5741858544</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"511.1177,-10352 358.8823,-10352 358.8823,-10332 511.1177,-10332 511.1177,-10352\"/>\n",
       "<text text-anchor=\"middle\" x=\"435\" y=\"-10338.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">NativeBatchNormBackward</text>\n",
       "</g>\n",
       "<!-- 5741858544&#45;&gt;5741858432 -->\n",
       "<g id=\"edge162\" class=\"edge\">\n",
       "<title>5741858544&#45;&gt;5741858432</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M419.4153,-10331.878C404.0009,-10321.8666 380.1878,-10306.4003 362.2903,-10294.7762\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"363.8389,-10291.6086 353.5461,-10289.0969 360.0261,-10297.4791 363.8389,-10291.6086\"/>\n",
       "</g>\n",
       "<!-- 5741858712 -->\n",
       "<g id=\"node164\" class=\"node\">\n",
       "<title>5741858712</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"453.1547,-10415 290.8453,-10415 290.8453,-10395 453.1547,-10395 453.1547,-10415\"/>\n",
       "<text text-anchor=\"middle\" x=\"372\" y=\"-10401.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">MkldnnConvolutionBackward</text>\n",
       "</g>\n",
       "<!-- 5741858712&#45;&gt;5741858544 -->\n",
       "<g id=\"edge163\" class=\"edge\">\n",
       "<title>5741858712&#45;&gt;5741858544</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M382.122,-10394.878C391.6177,-10385.3823 406.0206,-10370.9794 417.398,-10359.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"420.0976,-10361.8522 424.6938,-10352.3062 415.1478,-10356.9024 420.0976,-10361.8522\"/>\n",
       "</g>\n",
       "<!-- 5741862984 -->\n",
       "<g id=\"node165\" class=\"node\">\n",
       "<title>5741862984</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"418.8091,-10485 325.1909,-10485 325.1909,-10465 418.8091,-10465 418.8091,-10485\"/>\n",
       "<text text-anchor=\"middle\" x=\"372\" y=\"-10471.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ReluBackward1</text>\n",
       "</g>\n",
       "<!-- 5741862984&#45;&gt;5741858712 -->\n",
       "<g id=\"edge164\" class=\"edge\">\n",
       "<title>5741862984&#45;&gt;5741858712</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M372,-10464.9707C372,-10454.6786 372,-10438.3754 372,-10425.3639\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"375.5001,-10425.0107 372,-10415.0107 368.5001,-10425.0107 375.5001,-10425.0107\"/>\n",
       "</g>\n",
       "<!-- 5741863096 -->\n",
       "<g id=\"node166\" class=\"node\">\n",
       "<title>5741863096</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"545.1177,-10548 392.8823,-10548 392.8823,-10528 545.1177,-10528 545.1177,-10548\"/>\n",
       "<text text-anchor=\"middle\" x=\"469\" y=\"-10534.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">NativeBatchNormBackward</text>\n",
       "</g>\n",
       "<!-- 5741863096&#45;&gt;5741862984 -->\n",
       "<g id=\"edge165\" class=\"edge\">\n",
       "<title>5741863096&#45;&gt;5741862984</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M453.4153,-10527.878C438.0009,-10517.8666 414.1878,-10502.4003 396.2903,-10490.7762\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"397.8389,-10487.6086 387.5461,-10485.0969 394.0261,-10493.4791 397.8389,-10487.6086\"/>\n",
       "</g>\n",
       "<!-- 5741863264 -->\n",
       "<g id=\"node167\" class=\"node\">\n",
       "<title>5741863264</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"487.1547,-10611 324.8453,-10611 324.8453,-10591 487.1547,-10591 487.1547,-10611\"/>\n",
       "<text text-anchor=\"middle\" x=\"406\" y=\"-10597.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">MkldnnConvolutionBackward</text>\n",
       "</g>\n",
       "<!-- 5741863264&#45;&gt;5741863096 -->\n",
       "<g id=\"edge166\" class=\"edge\">\n",
       "<title>5741863264&#45;&gt;5741863096</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M416.122,-10590.878C425.6177,-10581.3823 440.0206,-10566.9794 451.398,-10555.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"454.0976,-10557.8522 458.6938,-10548.3062 449.1478,-10552.9024 454.0976,-10557.8522\"/>\n",
       "</g>\n",
       "<!-- 5741863376 -->\n",
       "<g id=\"node168\" class=\"node\">\n",
       "<title>5741863376</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"407.987,-10681 226.013,-10681 226.013,-10661 407.987,-10661 407.987,-10681\"/>\n",
       "<text text-anchor=\"middle\" x=\"317\" y=\"-10667.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">MaxPool2DWithIndicesBackward</text>\n",
       "</g>\n",
       "<!-- 5741863376&#45;&gt;5741863264 -->\n",
       "<g id=\"edge167\" class=\"edge\">\n",
       "<title>5741863376&#45;&gt;5741863264</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M329.7515,-10660.9707C344.159,-10649.639 367.831,-10631.0205 384.9816,-10617.5314\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"387.5757,-10619.9439 393.2721,-10611.0107 383.2482,-10614.4418 387.5757,-10619.9439\"/>\n",
       "</g>\n",
       "<!-- 5741858376 -->\n",
       "<g id=\"node185\" class=\"node\">\n",
       "<title>5741858376</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"306.1547,-10611 143.8453,-10611 143.8453,-10591 306.1547,-10591 306.1547,-10611\"/>\n",
       "<text text-anchor=\"middle\" x=\"225\" y=\"-10597.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">MkldnnConvolutionBackward</text>\n",
       "</g>\n",
       "<!-- 5741863376&#45;&gt;5741858376 -->\n",
       "<g id=\"edge185\" class=\"edge\">\n",
       "<title>5741863376&#45;&gt;5741858376</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M303.8186,-10660.9707C288.7889,-10649.535 264.0058,-10630.6783 246.2407,-10617.1614\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"248.2346,-10614.2805 238.1569,-10611.0107 243.9959,-10619.8514 248.2346,-10614.2805\"/>\n",
       "</g>\n",
       "<!-- 5741863488 -->\n",
       "<g id=\"node169\" class=\"node\">\n",
       "<title>5741863488</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"363.8091,-10744 270.1909,-10744 270.1909,-10724 363.8091,-10724 363.8091,-10744\"/>\n",
       "<text text-anchor=\"middle\" x=\"317\" y=\"-10730.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">ReluBackward1</text>\n",
       "</g>\n",
       "<!-- 5741863488&#45;&gt;5741863376 -->\n",
       "<g id=\"edge168\" class=\"edge\">\n",
       "<title>5741863488&#45;&gt;5741863376</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M317,-10723.878C317,-10715.2041 317,-10702.4355 317,-10691.6186\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"320.5001,-10691.3062 317,-10681.3062 313.5001,-10691.3062 320.5001,-10691.3062\"/>\n",
       "</g>\n",
       "<!-- 5741863656 -->\n",
       "<g id=\"node170\" class=\"node\">\n",
       "<title>5741863656</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"393.1177,-10800 240.8823,-10800 240.8823,-10780 393.1177,-10780 393.1177,-10800\"/>\n",
       "<text text-anchor=\"middle\" x=\"317\" y=\"-10786.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">NativeBatchNormBackward</text>\n",
       "</g>\n",
       "<!-- 5741863656&#45;&gt;5741863488 -->\n",
       "<g id=\"edge169\" class=\"edge\">\n",
       "<title>5741863656&#45;&gt;5741863488</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M317,-10779.9883C317,-10772.9098 317,-10763.1714 317,-10754.4779\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"320.5001,-10754.3038 317,-10744.3039 313.5001,-10754.3039 320.5001,-10754.3038\"/>\n",
       "</g>\n",
       "<!-- 5741863824 -->\n",
       "<g id=\"node171\" class=\"node\">\n",
       "<title>5741863824</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"272.1547,-10863 109.8453,-10863 109.8453,-10843 272.1547,-10843 272.1547,-10863\"/>\n",
       "<text text-anchor=\"middle\" x=\"191\" y=\"-10849.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">MkldnnConvolutionBackward</text>\n",
       "</g>\n",
       "<!-- 5741863824&#45;&gt;5741863656 -->\n",
       "<g id=\"edge170\" class=\"edge\">\n",
       "<title>5741863824&#45;&gt;5741863656</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M211.2441,-10842.878C231.9098,-10832.5451 264.1971,-10816.4015 287.6628,-10804.6686\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"289.4271,-10807.6996 296.8062,-10800.0969 286.2966,-10801.4386 289.4271,-10807.6996\"/>\n",
       "</g>\n",
       "<!-- 5741768488 -->\n",
       "<g id=\"node172\" class=\"node\">\n",
       "<title>5741768488</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"228.4922,-10940 153.5078,-10940 153.5078,-10906 228.4922,-10906 228.4922,-10940\"/>\n",
       "<text text-anchor=\"middle\" x=\"191\" y=\"-10912.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (64, 3, 7, 7)</text>\n",
       "</g>\n",
       "<!-- 5741768488&#45;&gt;5741863824 -->\n",
       "<g id=\"edge171\" class=\"edge\">\n",
       "<title>5741768488&#45;&gt;5741863824</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M191,-10905.6966C191,-10895.9445 191,-10883.7049 191,-10873.4768\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"194.5001,-10873.3805 191,-10863.3805 187.5001,-10873.3806 194.5001,-10873.3805\"/>\n",
       "</g>\n",
       "<!-- 5741768320 -->\n",
       "<g id=\"node173\" class=\"node\">\n",
       "<title>5741768320</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"344,-10870 290,-10870 290,-10836 344,-10836 344,-10870\"/>\n",
       "<text text-anchor=\"middle\" x=\"317\" y=\"-10842.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (64)</text>\n",
       "</g>\n",
       "<!-- 5741768320&#45;&gt;5741863656 -->\n",
       "<g id=\"edge172\" class=\"edge\">\n",
       "<title>5741768320&#45;&gt;5741863656</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M317,-10835.785C317,-10827.9703 317,-10818.6675 317,-10810.4951\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"320.5001,-10810.2974 317,-10800.2974 313.5001,-10810.2974 320.5001,-10810.2974\"/>\n",
       "</g>\n",
       "<!-- 5741768376 -->\n",
       "<g id=\"node174\" class=\"node\">\n",
       "<title>5741768376</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"416,-10870 362,-10870 362,-10836 416,-10836 416,-10870\"/>\n",
       "<text text-anchor=\"middle\" x=\"389\" y=\"-10842.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (64)</text>\n",
       "</g>\n",
       "<!-- 5741768376&#45;&gt;5741863656 -->\n",
       "<g id=\"edge173\" class=\"edge\">\n",
       "<title>5741768376&#45;&gt;5741863656</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M369.3257,-10835.785C359.0753,-10826.8159 346.5846,-10815.8865 336.3779,-10806.9557\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"338.599,-10804.2485 328.7685,-10800.2974 333.9895,-10809.5165 338.599,-10804.2485\"/>\n",
       "</g>\n",
       "<!-- 5741767816 -->\n",
       "<g id=\"node175\" class=\"node\">\n",
       "<title>5741767816</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"506.4922,-10688 425.5078,-10688 425.5078,-10654 506.4922,-10654 506.4922,-10688\"/>\n",
       "<text text-anchor=\"middle\" x=\"466\" y=\"-10660.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (64, 64, 1, 1)</text>\n",
       "</g>\n",
       "<!-- 5741767816&#45;&gt;5741863264 -->\n",
       "<g id=\"edge174\" class=\"edge\">\n",
       "<title>5741767816&#45;&gt;5741863264</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M451.1685,-10653.6966C442.1871,-10643.2183 430.7441,-10629.8682 421.6232,-10619.2271\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"424.063,-10616.6954 414.8976,-10611.3805 418.7481,-10621.2509 424.063,-10616.6954\"/>\n",
       "</g>\n",
       "<!-- 5741767592 -->\n",
       "<g id=\"node176\" class=\"node\">\n",
       "<title>5741767592</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"559,-10618 505,-10618 505,-10584 559,-10584 559,-10618\"/>\n",
       "<text text-anchor=\"middle\" x=\"532\" y=\"-10590.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (64)</text>\n",
       "</g>\n",
       "<!-- 5741767592&#45;&gt;5741863096 -->\n",
       "<g id=\"edge175\" class=\"edge\">\n",
       "<title>5741767592&#45;&gt;5741863096</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M514.785,-10583.785C505.9935,-10574.9935 495.3186,-10564.3186 486.4885,-10555.4885\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"488.8434,-10552.8936 479.2974,-10548.2974 483.8936,-10557.8434 488.8434,-10552.8936\"/>\n",
       "</g>\n",
       "<!-- 5741767648 -->\n",
       "<g id=\"node177\" class=\"node\">\n",
       "<title>5741767648</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"631,-10618 577,-10618 577,-10584 631,-10584 631,-10618\"/>\n",
       "<text text-anchor=\"middle\" x=\"604\" y=\"-10590.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (64)</text>\n",
       "</g>\n",
       "<!-- 5741767648&#45;&gt;5741863096 -->\n",
       "<g id=\"edge176\" class=\"edge\">\n",
       "<title>5741767648&#45;&gt;5741863096</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M576.8817,-10588.1721C573.886,-10586.7616 570.8792,-10585.3487 568,-10584 545.2428,-10573.3399 519.5003,-10561.3818 499.9703,-10552.3303\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"501.1929,-10549.0393 490.648,-10548.0117 498.2504,-10555.3909 501.1929,-10549.0393\"/>\n",
       "</g>\n",
       "<!-- 5741767256 -->\n",
       "<g id=\"node178\" class=\"node\">\n",
       "<title>5741767256</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"517.4922,-10492 436.5078,-10492 436.5078,-10458 517.4922,-10458 517.4922,-10492\"/>\n",
       "<text text-anchor=\"middle\" x=\"477\" y=\"-10464.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (64, 64, 3, 3)</text>\n",
       "</g>\n",
       "<!-- 5741767256&#45;&gt;5741858712 -->\n",
       "<g id=\"edge177\" class=\"edge\">\n",
       "<title>5741767256&#45;&gt;5741858712</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M451.3141,-10457.8761C434.3069,-10446.5379 412.1678,-10431.7785 395.6032,-10420.7355\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"397.3042,-10417.663 387.0422,-10415.0281 393.4212,-10423.4874 397.3042,-10417.663\"/>\n",
       "</g>\n",
       "<!-- 5741767032 -->\n",
       "<g id=\"node179\" class=\"node\">\n",
       "<title>5741767032</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"525,-10422 471,-10422 471,-10388 525,-10388 525,-10422\"/>\n",
       "<text text-anchor=\"middle\" x=\"498\" y=\"-10394.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (64)</text>\n",
       "</g>\n",
       "<!-- 5741767032&#45;&gt;5741858544 -->\n",
       "<g id=\"edge178\" class=\"edge\">\n",
       "<title>5741767032&#45;&gt;5741858544</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M480.785,-10387.785C471.9935,-10378.9935 461.3186,-10368.3186 452.4885,-10359.4885\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"454.8434,-10356.8936 445.2974,-10352.2974 449.8936,-10361.8434 454.8434,-10356.8936\"/>\n",
       "</g>\n",
       "<!-- 5741767088 -->\n",
       "<g id=\"node180\" class=\"node\">\n",
       "<title>5741767088</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"597,-10422 543,-10422 543,-10388 597,-10388 597,-10422\"/>\n",
       "<text text-anchor=\"middle\" x=\"570\" y=\"-10394.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (64)</text>\n",
       "</g>\n",
       "<!-- 5741767088&#45;&gt;5741858544 -->\n",
       "<g id=\"edge179\" class=\"edge\">\n",
       "<title>5741767088&#45;&gt;5741858544</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M542.8817,-10392.1721C539.886,-10390.7616 536.8792,-10389.3487 534,-10388 511.2428,-10377.3399 485.5003,-10365.3818 465.9703,-10356.3303\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"467.1929,-10353.0393 456.648,-10352.0117 464.2504,-10359.3909 467.1929,-10353.0393\"/>\n",
       "</g>\n",
       "<!-- 5741766696 -->\n",
       "<g id=\"node181\" class=\"node\">\n",
       "<title>5741766696</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"489.4922,-10296 402.5078,-10296 402.5078,-10262 489.4922,-10262 489.4922,-10296\"/>\n",
       "<text text-anchor=\"middle\" x=\"446\" y=\"-10268.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (256, 64, 1, 1)</text>\n",
       "</g>\n",
       "<!-- 5741766696&#45;&gt;5741858320 -->\n",
       "<g id=\"edge180\" class=\"edge\">\n",
       "<title>5741766696&#45;&gt;5741858320</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M419.5802,-10261.8761C402.0871,-10250.5379 379.3154,-10235.7785 362.2776,-10224.7355\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"363.7672,-10221.5301 353.472,-10219.0281 359.9599,-10227.4042 363.7672,-10221.5301\"/>\n",
       "</g>\n",
       "<!-- 5741766472 -->\n",
       "<g id=\"node182\" class=\"node\">\n",
       "<title>5741766472</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"491,-10226 437,-10226 437,-10192 491,-10192 491,-10226\"/>\n",
       "<text text-anchor=\"middle\" x=\"464\" y=\"-10198.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (256)</text>\n",
       "</g>\n",
       "<!-- 5741766472&#45;&gt;5741858152 -->\n",
       "<g id=\"edge181\" class=\"edge\">\n",
       "<title>5741766472&#45;&gt;5741858152</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M446.785,-10191.785C437.9935,-10182.9935 427.3186,-10172.3186 418.4885,-10163.4885\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"420.8434,-10160.8936 411.2974,-10156.2974 415.8936,-10165.8434 420.8434,-10160.8936\"/>\n",
       "</g>\n",
       "<!-- 5741766528 -->\n",
       "<g id=\"node183\" class=\"node\">\n",
       "<title>5741766528</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"563,-10226 509,-10226 509,-10192 563,-10192 563,-10226\"/>\n",
       "<text text-anchor=\"middle\" x=\"536\" y=\"-10198.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (256)</text>\n",
       "</g>\n",
       "<!-- 5741766528&#45;&gt;5741858152 -->\n",
       "<g id=\"edge182\" class=\"edge\">\n",
       "<title>5741766528&#45;&gt;5741858152</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M508.8817,-10196.1721C505.886,-10194.7616 502.8792,-10193.3487 500,-10192 477.2428,-10181.3399 451.5003,-10169.3818 431.9703,-10160.3303\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"433.1929,-10157.0393 422.648,-10156.0117 430.2504,-10163.3909 433.1929,-10157.0393\"/>\n",
       "</g>\n",
       "<!-- 5741858208 -->\n",
       "<g id=\"node184\" class=\"node\">\n",
       "<title>5741858208</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"238.1177,-10548 85.8823,-10548 85.8823,-10528 238.1177,-10528 238.1177,-10548\"/>\n",
       "<text text-anchor=\"middle\" x=\"162\" y=\"-10534.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">NativeBatchNormBackward</text>\n",
       "</g>\n",
       "<!-- 5741858208&#45;&gt;5741857984 -->\n",
       "<g id=\"edge183\" class=\"edge\">\n",
       "<title>5741858208&#45;&gt;5741857984</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M171.3161,-10527.8579C189.7258,-10506.7161 229,-10455.6751 229,-10405 229,-10405 229,-10405 229,-10209 229,-10170.5157 252.709,-10130.7842 268.7072,-10108.355\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"271.6667,-10110.2395 274.7986,-10100.1181 266.0385,-10106.0773 271.6667,-10110.2395\"/>\n",
       "</g>\n",
       "<!-- 5741858376&#45;&gt;5741858208 -->\n",
       "<g id=\"edge184\" class=\"edge\">\n",
       "<title>5741858376&#45;&gt;5741858208</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M214.878,-10590.878C205.3823,-10581.3823 190.9794,-10566.9794 179.602,-10555.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"181.8522,-10552.9024 172.3062,-10548.3062 176.9024,-10557.8522 181.8522,-10552.9024\"/>\n",
       "</g>\n",
       "<!-- 5741766864 -->\n",
       "<g id=\"node186\" class=\"node\">\n",
       "<title>5741766864</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"208.4922,-10688 121.5078,-10688 121.5078,-10654 208.4922,-10654 208.4922,-10688\"/>\n",
       "<text text-anchor=\"middle\" x=\"165\" y=\"-10660.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (256, 64, 1, 1)</text>\n",
       "</g>\n",
       "<!-- 5741766864&#45;&gt;5741858376 -->\n",
       "<g id=\"edge186\" class=\"edge\">\n",
       "<title>5741766864&#45;&gt;5741858376</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M179.8315,-10653.6966C188.8129,-10643.2183 200.2559,-10629.8682 209.3768,-10619.2271\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"212.2519,-10621.2509 216.1024,-10611.3805 206.937,-10616.6954 212.2519,-10621.2509\"/>\n",
       "</g>\n",
       "<!-- 5741766752 -->\n",
       "<g id=\"node187\" class=\"node\">\n",
       "<title>5741766752</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"54,-10618 0,-10618 0,-10584 54,-10584 54,-10618\"/>\n",
       "<text text-anchor=\"middle\" x=\"27\" y=\"-10590.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (256)</text>\n",
       "</g>\n",
       "<!-- 5741766752&#45;&gt;5741858208 -->\n",
       "<g id=\"edge187\" class=\"edge\">\n",
       "<title>5741766752&#45;&gt;5741858208</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M54.1183,-10588.1721C57.114,-10586.7616 60.1208,-10585.3487 63,-10584 85.7572,-10573.3399 111.4997,-10561.3818 131.0297,-10552.3303\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"132.7496,-10555.3909 140.352,-10548.0117 129.8071,-10549.0393 132.7496,-10555.3909\"/>\n",
       "</g>\n",
       "<!-- 5741767144 -->\n",
       "<g id=\"node188\" class=\"node\">\n",
       "<title>5741767144</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"126,-10618 72,-10618 72,-10584 126,-10584 126,-10618\"/>\n",
       "<text text-anchor=\"middle\" x=\"99\" y=\"-10590.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (256)</text>\n",
       "</g>\n",
       "<!-- 5741767144&#45;&gt;5741858208 -->\n",
       "<g id=\"edge188\" class=\"edge\">\n",
       "<title>5741767144&#45;&gt;5741858208</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M116.215,-10583.785C125.0065,-10574.9935 135.6814,-10564.3186 144.5115,-10555.4885\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"147.1064,-10557.8434 151.7026,-10548.2974 142.1566,-10552.8936 147.1064,-10557.8434\"/>\n",
       "</g>\n",
       "<!-- 5741765968 -->\n",
       "<g id=\"node189\" class=\"node\">\n",
       "<title>5741765968</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"434.4922,-10044 347.5078,-10044 347.5078,-10010 434.4922,-10010 434.4922,-10044\"/>\n",
       "<text text-anchor=\"middle\" x=\"391\" y=\"-10016.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (64, 256, 1, 1)</text>\n",
       "</g>\n",
       "<!-- 5741765968&#45;&gt;5741857816 -->\n",
       "<g id=\"edge189\" class=\"edge\">\n",
       "<title>5741765968&#45;&gt;5741857816</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M391,-10009.6966C391,-9999.9445 391,-9987.7049 391,-9977.4768\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"394.5001,-9977.3805 391,-9967.3805 387.5001,-9977.3806 394.5001,-9977.3805\"/>\n",
       "</g>\n",
       "<!-- 5741765800 -->\n",
       "<g id=\"node190\" class=\"node\">\n",
       "<title>5741765800</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"544,-9974 490,-9974 490,-9940 544,-9940 544,-9974\"/>\n",
       "<text text-anchor=\"middle\" x=\"517\" y=\"-9946.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (64)</text>\n",
       "</g>\n",
       "<!-- 5741765800&#45;&gt;5741857648 -->\n",
       "<g id=\"edge190\" class=\"edge\">\n",
       "<title>5741765800&#45;&gt;5741857648</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M499.785,-9939.785C490.9935,-9930.9935 480.3186,-9920.3186 471.4885,-9911.4885\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"473.8434,-9908.8936 464.2974,-9904.2974 468.8936,-9913.8434 473.8434,-9908.8936\"/>\n",
       "</g>\n",
       "<!-- 5741765856 -->\n",
       "<g id=\"node191\" class=\"node\">\n",
       "<title>5741765856</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"616,-9974 562,-9974 562,-9940 616,-9940 616,-9974\"/>\n",
       "<text text-anchor=\"middle\" x=\"589\" y=\"-9946.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (64)</text>\n",
       "</g>\n",
       "<!-- 5741765856&#45;&gt;5741857648 -->\n",
       "<g id=\"edge191\" class=\"edge\">\n",
       "<title>5741765856&#45;&gt;5741857648</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M561.8817,-9944.1721C558.886,-9942.7616 555.8792,-9941.3487 553,-9940 530.2428,-9929.3399 504.5003,-9917.3818 484.9703,-9908.3303\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"486.1929,-9905.0393 475.648,-9904.0117 483.2504,-9911.3909 486.1929,-9905.0393\"/>\n",
       "</g>\n",
       "<!-- 5741765464 -->\n",
       "<g id=\"node192\" class=\"node\">\n",
       "<title>5741765464</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"536.4922,-9848 455.5078,-9848 455.5078,-9814 536.4922,-9814 536.4922,-9848\"/>\n",
       "<text text-anchor=\"middle\" x=\"496\" y=\"-9820.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (64, 64, 3, 3)</text>\n",
       "</g>\n",
       "<!-- 5741765464&#45;&gt;5741857424 -->\n",
       "<g id=\"edge192\" class=\"edge\">\n",
       "<title>5741765464&#45;&gt;5741857424</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M470.3141,-9813.8761C453.3069,-9802.5379 431.1678,-9787.7785 414.6032,-9776.7355\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"416.3042,-9773.663 406.0422,-9771.0281 412.4212,-9779.4874 416.3042,-9773.663\"/>\n",
       "</g>\n",
       "<!-- 5741765240 -->\n",
       "<g id=\"node193\" class=\"node\">\n",
       "<title>5741765240</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"544,-9778 490,-9778 490,-9744 544,-9744 544,-9778\"/>\n",
       "<text text-anchor=\"middle\" x=\"517\" y=\"-9750.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (64)</text>\n",
       "</g>\n",
       "<!-- 5741765240&#45;&gt;5741857312 -->\n",
       "<g id=\"edge193\" class=\"edge\">\n",
       "<title>5741765240&#45;&gt;5741857312</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M499.785,-9743.785C490.9935,-9734.9935 480.3186,-9724.3186 471.4885,-9715.4885\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"473.8434,-9712.8936 464.2974,-9708.2974 468.8936,-9717.8434 473.8434,-9712.8936\"/>\n",
       "</g>\n",
       "<!-- 5741765296 -->\n",
       "<g id=\"node194\" class=\"node\">\n",
       "<title>5741765296</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"616,-9778 562,-9778 562,-9744 616,-9744 616,-9778\"/>\n",
       "<text text-anchor=\"middle\" x=\"589\" y=\"-9750.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (64)</text>\n",
       "</g>\n",
       "<!-- 5741765296&#45;&gt;5741857312 -->\n",
       "<g id=\"edge194\" class=\"edge\">\n",
       "<title>5741765296&#45;&gt;5741857312</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M561.8817,-9748.1721C558.886,-9746.7616 555.8792,-9745.3487 553,-9744 530.2428,-9733.3399 504.5003,-9721.3818 484.9703,-9712.3303\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"486.1929,-9709.0393 475.648,-9708.0117 483.2504,-9715.3909 486.1929,-9709.0393\"/>\n",
       "</g>\n",
       "<!-- 5741764904 -->\n",
       "<g id=\"node195\" class=\"node\">\n",
       "<title>5741764904</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"542.4922,-9652 455.5078,-9652 455.5078,-9618 542.4922,-9618 542.4922,-9652\"/>\n",
       "<text text-anchor=\"middle\" x=\"499\" y=\"-9624.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (256, 64, 1, 1)</text>\n",
       "</g>\n",
       "<!-- 5741764904&#45;&gt;5741857088 -->\n",
       "<g id=\"edge195\" class=\"edge\">\n",
       "<title>5741764904&#45;&gt;5741857088</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M472.5802,-9617.8761C455.0871,-9606.5379 432.3154,-9591.7785 415.2776,-9580.7355\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"416.7672,-9577.5301 406.472,-9575.0281 412.9599,-9583.4042 416.7672,-9577.5301\"/>\n",
       "</g>\n",
       "<!-- 5741764680 -->\n",
       "<g id=\"node196\" class=\"node\">\n",
       "<title>5741764680</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"544,-9582 490,-9582 490,-9548 544,-9548 544,-9582\"/>\n",
       "<text text-anchor=\"middle\" x=\"517\" y=\"-9554.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (256)</text>\n",
       "</g>\n",
       "<!-- 5741764680&#45;&gt;5660119504 -->\n",
       "<g id=\"edge196\" class=\"edge\">\n",
       "<title>5741764680&#45;&gt;5660119504</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M499.785,-9547.785C490.9935,-9538.9935 480.3186,-9528.3186 471.4885,-9519.4885\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"473.8434,-9516.8936 464.2974,-9512.2974 468.8936,-9521.8434 473.8434,-9516.8936\"/>\n",
       "</g>\n",
       "<!-- 5741764736 -->\n",
       "<g id=\"node197\" class=\"node\">\n",
       "<title>5741764736</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"616,-9582 562,-9582 562,-9548 616,-9548 616,-9582\"/>\n",
       "<text text-anchor=\"middle\" x=\"589\" y=\"-9554.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (256)</text>\n",
       "</g>\n",
       "<!-- 5741764736&#45;&gt;5660119504 -->\n",
       "<g id=\"edge197\" class=\"edge\">\n",
       "<title>5741764736&#45;&gt;5660119504</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M561.8817,-9552.1721C558.886,-9550.7616 555.8792,-9549.3487 553,-9548 530.2428,-9537.3399 504.5003,-9525.3818 484.9703,-9516.3303\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"486.1929,-9513.0393 475.648,-9512.0117 483.2504,-9519.3909 486.1929,-9513.0393\"/>\n",
       "</g>\n",
       "<!-- 5741755920 -->\n",
       "<g id=\"node198\" class=\"node\">\n",
       "<title>5741755920</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"487.4922,-9400 400.5078,-9400 400.5078,-9366 487.4922,-9366 487.4922,-9400\"/>\n",
       "<text text-anchor=\"middle\" x=\"444\" y=\"-9372.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (64, 256, 1, 1)</text>\n",
       "</g>\n",
       "<!-- 5741755920&#45;&gt;5660119840 -->\n",
       "<g id=\"edge199\" class=\"edge\">\n",
       "<title>5741755920&#45;&gt;5660119840</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M444,-9365.6966C444,-9355.9445 444,-9343.7049 444,-9333.4768\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"447.5001,-9333.3805 444,-9323.3805 440.5001,-9333.3806 447.5001,-9333.3805\"/>\n",
       "</g>\n",
       "<!-- 5741755752 -->\n",
       "<g id=\"node199\" class=\"node\">\n",
       "<title>5741755752</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"597,-9330 543,-9330 543,-9296 597,-9296 597,-9330\"/>\n",
       "<text text-anchor=\"middle\" x=\"570\" y=\"-9302.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (64)</text>\n",
       "</g>\n",
       "<!-- 5741755752&#45;&gt;5741856920 -->\n",
       "<g id=\"edge200\" class=\"edge\">\n",
       "<title>5741755752&#45;&gt;5741856920</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M552.785,-9295.785C543.9935,-9286.9935 533.3186,-9276.3186 524.4885,-9267.4885\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"526.8434,-9264.8936 517.2974,-9260.2974 521.8936,-9269.8434 526.8434,-9264.8936\"/>\n",
       "</g>\n",
       "<!-- 5741755808 -->\n",
       "<g id=\"node200\" class=\"node\">\n",
       "<title>5741755808</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"669,-9330 615,-9330 615,-9296 669,-9296 669,-9330\"/>\n",
       "<text text-anchor=\"middle\" x=\"642\" y=\"-9302.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (64)</text>\n",
       "</g>\n",
       "<!-- 5741755808&#45;&gt;5741856920 -->\n",
       "<g id=\"edge201\" class=\"edge\">\n",
       "<title>5741755808&#45;&gt;5741856920</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M614.8817,-9300.1721C611.886,-9298.7616 608.8792,-9297.3487 606,-9296 583.2428,-9285.3399 557.5003,-9273.3818 537.9703,-9264.3303\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"539.1929,-9261.0393 528.648,-9260.0117 536.2504,-9267.3909 539.1929,-9261.0393\"/>\n",
       "</g>\n",
       "<!-- 5741755416 -->\n",
       "<g id=\"node201\" class=\"node\">\n",
       "<title>5741755416</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"589.4922,-9204 508.5078,-9204 508.5078,-9170 589.4922,-9170 589.4922,-9204\"/>\n",
       "<text text-anchor=\"middle\" x=\"549\" y=\"-9176.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (64, 64, 3, 3)</text>\n",
       "</g>\n",
       "<!-- 5741755416&#45;&gt;5741856696 -->\n",
       "<g id=\"edge202\" class=\"edge\">\n",
       "<title>5741755416&#45;&gt;5741856696</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M523.3141,-9169.8761C506.3069,-9158.5379 484.1678,-9143.7785 467.6032,-9132.7355\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"469.3042,-9129.663 459.0422,-9127.0281 465.4212,-9135.4874 469.3042,-9129.663\"/>\n",
       "</g>\n",
       "<!-- 5741755192 -->\n",
       "<g id=\"node202\" class=\"node\">\n",
       "<title>5741755192</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"597,-9134 543,-9134 543,-9100 597,-9100 597,-9134\"/>\n",
       "<text text-anchor=\"middle\" x=\"570\" y=\"-9106.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (64)</text>\n",
       "</g>\n",
       "<!-- 5741755192&#45;&gt;5741856528 -->\n",
       "<g id=\"edge203\" class=\"edge\">\n",
       "<title>5741755192&#45;&gt;5741856528</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M552.785,-9099.785C543.9935,-9090.9935 533.3186,-9080.3186 524.4885,-9071.4885\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"526.8434,-9068.8936 517.2974,-9064.2974 521.8936,-9073.8434 526.8434,-9068.8936\"/>\n",
       "</g>\n",
       "<!-- 5741755248 -->\n",
       "<g id=\"node203\" class=\"node\">\n",
       "<title>5741755248</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"669,-9134 615,-9134 615,-9100 669,-9100 669,-9134\"/>\n",
       "<text text-anchor=\"middle\" x=\"642\" y=\"-9106.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (64)</text>\n",
       "</g>\n",
       "<!-- 5741755248&#45;&gt;5741856528 -->\n",
       "<g id=\"edge204\" class=\"edge\">\n",
       "<title>5741755248&#45;&gt;5741856528</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M614.8817,-9104.1721C611.886,-9102.7616 608.8792,-9101.3487 606,-9100 583.2428,-9089.3399 557.5003,-9077.3818 537.9703,-9068.3303\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"539.1929,-9065.0393 528.648,-9064.0117 536.2504,-9071.3909 539.1929,-9065.0393\"/>\n",
       "</g>\n",
       "<!-- 5741754856 -->\n",
       "<g id=\"node204\" class=\"node\">\n",
       "<title>5741754856</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"595.4922,-9008 508.5078,-9008 508.5078,-8974 595.4922,-8974 595.4922,-9008\"/>\n",
       "<text text-anchor=\"middle\" x=\"552\" y=\"-8980.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (256, 64, 1, 1)</text>\n",
       "</g>\n",
       "<!-- 5741754856&#45;&gt;5741856304 -->\n",
       "<g id=\"edge205\" class=\"edge\">\n",
       "<title>5741754856&#45;&gt;5741856304</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M525.5802,-8973.8761C508.0871,-8962.5379 485.3154,-8947.7785 468.2776,-8936.7355\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"469.7672,-8933.5301 459.472,-8931.0281 465.9599,-8939.4042 469.7672,-8933.5301\"/>\n",
       "</g>\n",
       "<!-- 5741754632 -->\n",
       "<g id=\"node205\" class=\"node\">\n",
       "<title>5741754632</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"597,-8938 543,-8938 543,-8904 597,-8904 597,-8938\"/>\n",
       "<text text-anchor=\"middle\" x=\"570\" y=\"-8910.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (256)</text>\n",
       "</g>\n",
       "<!-- 5741754632&#45;&gt;5741856136 -->\n",
       "<g id=\"edge206\" class=\"edge\">\n",
       "<title>5741754632&#45;&gt;5741856136</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M552.785,-8903.785C543.9935,-8894.9935 533.3186,-8884.3186 524.4885,-8875.4885\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"526.8434,-8872.8936 517.2974,-8868.2974 521.8936,-8877.8434 526.8434,-8872.8936\"/>\n",
       "</g>\n",
       "<!-- 5741754688 -->\n",
       "<g id=\"node206\" class=\"node\">\n",
       "<title>5741754688</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"669,-8938 615,-8938 615,-8904 669,-8904 669,-8938\"/>\n",
       "<text text-anchor=\"middle\" x=\"642\" y=\"-8910.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (256)</text>\n",
       "</g>\n",
       "<!-- 5741754688&#45;&gt;5741856136 -->\n",
       "<g id=\"edge207\" class=\"edge\">\n",
       "<title>5741754688&#45;&gt;5741856136</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M614.8817,-8908.1721C611.886,-8906.7616 608.8792,-8905.3487 606,-8904 583.2428,-8893.3399 557.5003,-8881.3818 537.9703,-8872.3303\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"539.1929,-8869.0393 528.648,-8868.0117 536.2504,-8875.3909 539.1929,-8869.0393\"/>\n",
       "</g>\n",
       "<!-- 5741754128 -->\n",
       "<g id=\"node207\" class=\"node\">\n",
       "<title>5741754128</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"546.4922,-8756 453.5078,-8756 453.5078,-8722 546.4922,-8722 546.4922,-8756\"/>\n",
       "<text text-anchor=\"middle\" x=\"500\" y=\"-8728.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (128, 256, 1, 1)</text>\n",
       "</g>\n",
       "<!-- 5741754128&#45;&gt;5741855744 -->\n",
       "<g id=\"edge209\" class=\"edge\">\n",
       "<title>5741754128&#45;&gt;5741855744</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M495.0562,-8721.6966C492.2402,-8711.8407 488.6983,-8699.4442 485.7574,-8689.151\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"489.0785,-8688.0342 482.9659,-8679.3805 482.3478,-8689.9573 489.0785,-8688.0342\"/>\n",
       "</g>\n",
       "<!-- 5741753904 -->\n",
       "<g id=\"node208\" class=\"node\">\n",
       "<title>5741753904</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"633,-8686 579,-8686 579,-8652 633,-8652 633,-8686\"/>\n",
       "<text text-anchor=\"middle\" x=\"606\" y=\"-8658.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (128)</text>\n",
       "</g>\n",
       "<!-- 5741753904&#45;&gt;5741855576 -->\n",
       "<g id=\"edge210\" class=\"edge\">\n",
       "<title>5741753904&#45;&gt;5741855576</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M588.785,-8651.785C579.9935,-8642.9935 569.3186,-8632.3186 560.4885,-8623.4885\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"562.8434,-8620.8936 553.2974,-8616.2974 557.8936,-8625.8434 562.8434,-8620.8936\"/>\n",
       "</g>\n",
       "<!-- 5741753960 -->\n",
       "<g id=\"node209\" class=\"node\">\n",
       "<title>5741753960</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"705,-8686 651,-8686 651,-8652 705,-8652 705,-8686\"/>\n",
       "<text text-anchor=\"middle\" x=\"678\" y=\"-8658.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (128)</text>\n",
       "</g>\n",
       "<!-- 5741753960&#45;&gt;5741855576 -->\n",
       "<g id=\"edge211\" class=\"edge\">\n",
       "<title>5741753960&#45;&gt;5741855576</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M650.8817,-8656.1721C647.886,-8654.7616 644.8792,-8653.3487 642,-8652 619.2428,-8641.3399 593.5003,-8629.3818 573.9703,-8620.3303\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"575.1929,-8617.0393 564.648,-8616.0117 572.2504,-8623.3909 575.1929,-8617.0393\"/>\n",
       "</g>\n",
       "<!-- 5741753568 -->\n",
       "<g id=\"node210\" class=\"node\">\n",
       "<title>5741753568</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"603.4922,-8560 510.5078,-8560 510.5078,-8526 603.4922,-8526 603.4922,-8560\"/>\n",
       "<text text-anchor=\"middle\" x=\"557\" y=\"-8532.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (128, 128, 3, 3)</text>\n",
       "</g>\n",
       "<!-- 5741753568&#45;&gt;5741855352 -->\n",
       "<g id=\"edge212\" class=\"edge\">\n",
       "<title>5741753568&#45;&gt;5741855352</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M529.8463,-8525.8761C511.7008,-8514.4329 488.0292,-8499.5049 470.4671,-8488.4297\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"472.2273,-8485.4019 461.9017,-8483.0281 468.4933,-8491.3229 472.2273,-8485.4019\"/>\n",
       "</g>\n",
       "<!-- 5741753344 -->\n",
       "<g id=\"node211\" class=\"node\">\n",
       "<title>5741753344</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"599,-8490 545,-8490 545,-8456 599,-8456 599,-8490\"/>\n",
       "<text text-anchor=\"middle\" x=\"572\" y=\"-8462.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (128)</text>\n",
       "</g>\n",
       "<!-- 5741753344&#45;&gt;5741855184 -->\n",
       "<g id=\"edge213\" class=\"edge\">\n",
       "<title>5741753344&#45;&gt;5741855184</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M554.785,-8455.785C545.9935,-8446.9935 535.3186,-8436.3186 526.4885,-8427.4885\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"528.8434,-8424.8936 519.2974,-8420.2974 523.8936,-8429.8434 528.8434,-8424.8936\"/>\n",
       "</g>\n",
       "<!-- 5741753400 -->\n",
       "<g id=\"node212\" class=\"node\">\n",
       "<title>5741753400</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"671,-8490 617,-8490 617,-8456 671,-8456 671,-8490\"/>\n",
       "<text text-anchor=\"middle\" x=\"644\" y=\"-8462.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (128)</text>\n",
       "</g>\n",
       "<!-- 5741753400&#45;&gt;5741855184 -->\n",
       "<g id=\"edge214\" class=\"edge\">\n",
       "<title>5741753400&#45;&gt;5741855184</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M616.8817,-8460.1721C613.886,-8458.7616 610.8792,-8457.3487 608,-8456 585.2428,-8445.3399 559.5003,-8433.3818 539.9703,-8424.3303\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"541.1929,-8421.0393 530.648,-8420.0117 538.2504,-8427.3909 541.1929,-8421.0393\"/>\n",
       "</g>\n",
       "<!-- 5741753008 -->\n",
       "<g id=\"node213\" class=\"node\">\n",
       "<title>5741753008</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"569.4922,-8364 476.5078,-8364 476.5078,-8330 569.4922,-8330 569.4922,-8364\"/>\n",
       "<text text-anchor=\"middle\" x=\"523\" y=\"-8336.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (512, 128, 1, 1)</text>\n",
       "</g>\n",
       "<!-- 5741753008&#45;&gt;5741854960 -->\n",
       "<g id=\"edge215\" class=\"edge\">\n",
       "<title>5741753008&#45;&gt;5741854960</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M495.8463,-8329.8761C477.7008,-8318.4329 454.0292,-8303.5049 436.4671,-8292.4297\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"438.2273,-8289.4019 427.9017,-8287.0281 434.4933,-8295.3229 438.2273,-8289.4019\"/>\n",
       "</g>\n",
       "<!-- 5741752784 -->\n",
       "<g id=\"node214\" class=\"node\">\n",
       "<title>5741752784</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"565,-8294 511,-8294 511,-8260 565,-8260 565,-8294\"/>\n",
       "<text text-anchor=\"middle\" x=\"538\" y=\"-8266.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (512)</text>\n",
       "</g>\n",
       "<!-- 5741752784&#45;&gt;5741854792 -->\n",
       "<g id=\"edge216\" class=\"edge\">\n",
       "<title>5741752784&#45;&gt;5741854792</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M520.785,-8259.785C511.9935,-8250.9935 501.3186,-8240.3186 492.4885,-8231.4885\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"494.8434,-8228.8936 485.2974,-8224.2974 489.8936,-8233.8434 494.8434,-8228.8936\"/>\n",
       "</g>\n",
       "<!-- 5741752840 -->\n",
       "<g id=\"node215\" class=\"node\">\n",
       "<title>5741752840</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"637,-8294 583,-8294 583,-8260 637,-8260 637,-8294\"/>\n",
       "<text text-anchor=\"middle\" x=\"610\" y=\"-8266.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (512)</text>\n",
       "</g>\n",
       "<!-- 5741752840&#45;&gt;5741854792 -->\n",
       "<g id=\"edge217\" class=\"edge\">\n",
       "<title>5741752840&#45;&gt;5741854792</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M582.8817,-8264.1721C579.886,-8262.7616 576.8792,-8261.3487 574,-8260 551.2428,-8249.3399 525.5003,-8237.3818 505.9703,-8228.3303\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"507.1929,-8225.0393 496.648,-8224.0117 504.2504,-8231.3909 507.1929,-8225.0393\"/>\n",
       "</g>\n",
       "<!-- 5741854848 -->\n",
       "<g id=\"node216\" class=\"node\">\n",
       "<title>5741854848</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"312.1177,-8616 159.8823,-8616 159.8823,-8596 312.1177,-8596 312.1177,-8616\"/>\n",
       "<text text-anchor=\"middle\" x=\"236\" y=\"-8602.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">NativeBatchNormBackward</text>\n",
       "</g>\n",
       "<!-- 5741854848&#45;&gt;5741846368 -->\n",
       "<g id=\"edge218\" class=\"edge\">\n",
       "<title>5741854848&#45;&gt;5741846368</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M245.3161,-8595.8579C263.7258,-8574.7161 303,-8523.6751 303,-8473 303,-8473 303,-8473 303,-8277 303,-8238.5157 326.709,-8198.7842 342.7072,-8176.355\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"345.6667,-8178.2395 348.7986,-8168.1181 340.0385,-8174.0773 345.6667,-8178.2395\"/>\n",
       "</g>\n",
       "<!-- 5660119448&#45;&gt;5741854848 -->\n",
       "<g id=\"edge219\" class=\"edge\">\n",
       "<title>5660119448&#45;&gt;5741854848</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M288.878,-8658.878C279.3823,-8649.3823 264.9794,-8634.9794 253.602,-8623.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"255.8522,-8620.9024 246.3062,-8616.3062 250.9024,-8625.8522 255.8522,-8620.9024\"/>\n",
       "</g>\n",
       "<!-- 5741753176 -->\n",
       "<g id=\"node218\" class=\"node\">\n",
       "<title>5741753176</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"324.4922,-8756 231.5078,-8756 231.5078,-8722 324.4922,-8722 324.4922,-8756\"/>\n",
       "<text text-anchor=\"middle\" x=\"278\" y=\"-8728.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (512, 256, 1, 1)</text>\n",
       "</g>\n",
       "<!-- 5741753176&#45;&gt;5660119448 -->\n",
       "<g id=\"edge221\" class=\"edge\">\n",
       "<title>5741753176&#45;&gt;5660119448</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M283.191,-8721.6966C286.1478,-8711.8407 289.8667,-8699.4442 292.9547,-8689.151\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"296.3647,-8689.9646 295.8858,-8679.3805 289.6599,-8687.9531 296.3647,-8689.9646\"/>\n",
       "</g>\n",
       "<!-- 5741753064 -->\n",
       "<g id=\"node219\" class=\"node\">\n",
       "<title>5741753064</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"128,-8686 74,-8686 74,-8652 128,-8652 128,-8686\"/>\n",
       "<text text-anchor=\"middle\" x=\"101\" y=\"-8658.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (512)</text>\n",
       "</g>\n",
       "<!-- 5741753064&#45;&gt;5741854848 -->\n",
       "<g id=\"edge222\" class=\"edge\">\n",
       "<title>5741753064&#45;&gt;5741854848</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M128.1183,-8656.1721C131.114,-8654.7616 134.1208,-8653.3487 137,-8652 159.7572,-8641.3399 185.4997,-8629.3818 205.0297,-8620.3303\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"206.7496,-8623.3909 214.352,-8616.0117 203.8071,-8617.0393 206.7496,-8623.3909\"/>\n",
       "</g>\n",
       "<!-- 5741753456 -->\n",
       "<g id=\"node220\" class=\"node\">\n",
       "<title>5741753456</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"200,-8686 146,-8686 146,-8652 200,-8652 200,-8686\"/>\n",
       "<text text-anchor=\"middle\" x=\"173\" y=\"-8658.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (512)</text>\n",
       "</g>\n",
       "<!-- 5741753456&#45;&gt;5741854848 -->\n",
       "<g id=\"edge223\" class=\"edge\">\n",
       "<title>5741753456&#45;&gt;5741854848</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M190.215,-8651.785C199.0065,-8642.9935 209.6814,-8632.3186 218.5115,-8623.4885\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"221.1064,-8625.8434 225.7026,-8616.2974 216.1566,-8620.8936 221.1064,-8625.8434\"/>\n",
       "</g>\n",
       "<!-- 5741752216 -->\n",
       "<g id=\"node221\" class=\"node\">\n",
       "<title>5741752216</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"514.4922,-8112 421.5078,-8112 421.5078,-8078 514.4922,-8078 514.4922,-8112\"/>\n",
       "<text text-anchor=\"middle\" x=\"468\" y=\"-8084.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (128, 512, 1, 1)</text>\n",
       "</g>\n",
       "<!-- 5741752216&#45;&gt;5741846200 -->\n",
       "<g id=\"edge224\" class=\"edge\">\n",
       "<title>5741752216&#45;&gt;5741846200</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M467.5056,-8077.6966C467.227,-8067.9445 466.8773,-8055.7049 466.5851,-8045.4768\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"470.0809,-8045.2765 466.2966,-8035.3805 463.0837,-8045.4765 470.0809,-8045.2765\"/>\n",
       "</g>\n",
       "<!-- 5741752048 -->\n",
       "<g id=\"node222\" class=\"node\">\n",
       "<title>5741752048</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"619,-8042 565,-8042 565,-8008 619,-8008 619,-8042\"/>\n",
       "<text text-anchor=\"middle\" x=\"592\" y=\"-8014.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (128)</text>\n",
       "</g>\n",
       "<!-- 5741752048&#45;&gt;5741846032 -->\n",
       "<g id=\"edge225\" class=\"edge\">\n",
       "<title>5741752048&#45;&gt;5741846032</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M574.785,-8007.785C565.9935,-7998.9935 555.3186,-7988.3186 546.4885,-7979.4885\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"548.8434,-7976.8936 539.2974,-7972.2974 543.8936,-7981.8434 548.8434,-7976.8936\"/>\n",
       "</g>\n",
       "<!-- 5741752104 -->\n",
       "<g id=\"node223\" class=\"node\">\n",
       "<title>5741752104</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"691,-8042 637,-8042 637,-8008 691,-8008 691,-8042\"/>\n",
       "<text text-anchor=\"middle\" x=\"664\" y=\"-8014.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (128)</text>\n",
       "</g>\n",
       "<!-- 5741752104&#45;&gt;5741846032 -->\n",
       "<g id=\"edge226\" class=\"edge\">\n",
       "<title>5741752104&#45;&gt;5741846032</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M636.8817,-8012.1721C633.886,-8010.7616 630.8792,-8009.3487 628,-8008 605.2428,-7997.3399 579.5003,-7985.3818 559.9703,-7976.3303\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"561.1929,-7973.0393 550.648,-7972.0117 558.2504,-7979.3909 561.1929,-7973.0393\"/>\n",
       "</g>\n",
       "<!-- 5741751768 -->\n",
       "<g id=\"node224\" class=\"node\">\n",
       "<title>5741751768</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"623.4922,-7916 530.5078,-7916 530.5078,-7882 623.4922,-7882 623.4922,-7916\"/>\n",
       "<text text-anchor=\"middle\" x=\"577\" y=\"-7888.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (128, 128, 3, 3)</text>\n",
       "</g>\n",
       "<!-- 5741751768&#45;&gt;5741845808 -->\n",
       "<g id=\"edge227\" class=\"edge\">\n",
       "<title>5741751768&#45;&gt;5741845808</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M549.8463,-7881.8761C531.7008,-7870.4329 508.0292,-7855.5049 490.4671,-7844.4297\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"492.2273,-7841.4019 481.9017,-7839.0281 488.4933,-7847.3229 492.2273,-7841.4019\"/>\n",
       "</g>\n",
       "<!-- 5741751544 -->\n",
       "<g id=\"node225\" class=\"node\">\n",
       "<title>5741751544</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"619,-7846 565,-7846 565,-7812 619,-7812 619,-7846\"/>\n",
       "<text text-anchor=\"middle\" x=\"592\" y=\"-7818.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (128)</text>\n",
       "</g>\n",
       "<!-- 5741751544&#45;&gt;5741845640 -->\n",
       "<g id=\"edge228\" class=\"edge\">\n",
       "<title>5741751544&#45;&gt;5741845640</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M574.785,-7811.785C565.9935,-7802.9935 555.3186,-7792.3186 546.4885,-7783.4885\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"548.8434,-7780.8936 539.2974,-7776.2974 543.8936,-7785.8434 548.8434,-7780.8936\"/>\n",
       "</g>\n",
       "<!-- 5741751600 -->\n",
       "<g id=\"node226\" class=\"node\">\n",
       "<title>5741751600</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"691,-7846 637,-7846 637,-7812 691,-7812 691,-7846\"/>\n",
       "<text text-anchor=\"middle\" x=\"664\" y=\"-7818.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (128)</text>\n",
       "</g>\n",
       "<!-- 5741751600&#45;&gt;5741845640 -->\n",
       "<g id=\"edge229\" class=\"edge\">\n",
       "<title>5741751600&#45;&gt;5741845640</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M636.8817,-7816.1721C633.886,-7814.7616 630.8792,-7813.3487 628,-7812 605.2428,-7801.3399 579.5003,-7789.3818 559.9703,-7780.3303\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"561.1929,-7777.0393 550.648,-7776.0117 558.2504,-7783.3909 561.1929,-7777.0393\"/>\n",
       "</g>\n",
       "<!-- 5741751264 -->\n",
       "<g id=\"node227\" class=\"node\">\n",
       "<title>5741751264</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"623.4922,-7720 530.5078,-7720 530.5078,-7686 623.4922,-7686 623.4922,-7720\"/>\n",
       "<text text-anchor=\"middle\" x=\"577\" y=\"-7692.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (512, 128, 1, 1)</text>\n",
       "</g>\n",
       "<!-- 5741751264&#45;&gt;5741845416 -->\n",
       "<g id=\"edge230\" class=\"edge\">\n",
       "<title>5741751264&#45;&gt;5741845416</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M549.8463,-7685.8761C531.7008,-7674.4329 508.0292,-7659.5049 490.4671,-7648.4297\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"492.2273,-7645.4019 481.9017,-7643.0281 488.4933,-7651.3229 492.2273,-7645.4019\"/>\n",
       "</g>\n",
       "<!-- 5741751040 -->\n",
       "<g id=\"node228\" class=\"node\">\n",
       "<title>5741751040</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"619,-7650 565,-7650 565,-7616 619,-7616 619,-7650\"/>\n",
       "<text text-anchor=\"middle\" x=\"592\" y=\"-7622.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (512)</text>\n",
       "</g>\n",
       "<!-- 5741751040&#45;&gt;5741845248 -->\n",
       "<g id=\"edge231\" class=\"edge\">\n",
       "<title>5741751040&#45;&gt;5741845248</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M574.785,-7615.785C565.9935,-7606.9935 555.3186,-7596.3186 546.4885,-7587.4885\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"548.8434,-7584.8936 539.2974,-7580.2974 543.8936,-7589.8434 548.8434,-7584.8936\"/>\n",
       "</g>\n",
       "<!-- 5741751096 -->\n",
       "<g id=\"node229\" class=\"node\">\n",
       "<title>5741751096</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"691,-7650 637,-7650 637,-7616 691,-7616 691,-7650\"/>\n",
       "<text text-anchor=\"middle\" x=\"664\" y=\"-7622.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (512)</text>\n",
       "</g>\n",
       "<!-- 5741751096&#45;&gt;5741845248 -->\n",
       "<g id=\"edge232\" class=\"edge\">\n",
       "<title>5741751096&#45;&gt;5741845248</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M636.8817,-7620.1721C633.886,-7618.7616 630.8792,-7617.3487 628,-7616 605.2428,-7605.3399 579.5003,-7593.3818 559.9703,-7584.3303\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"561.1929,-7581.0393 550.648,-7580.0117 558.2504,-7587.3909 561.1929,-7581.0393\"/>\n",
       "</g>\n",
       "<!-- 5741750592 -->\n",
       "<g id=\"node230\" class=\"node\">\n",
       "<title>5741750592</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"568.4922,-7468 475.5078,-7468 475.5078,-7434 568.4922,-7434 568.4922,-7468\"/>\n",
       "<text text-anchor=\"middle\" x=\"522\" y=\"-7440.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (128, 512, 1, 1)</text>\n",
       "</g>\n",
       "<!-- 5741750592&#45;&gt;5741844912 -->\n",
       "<g id=\"edge234\" class=\"edge\">\n",
       "<title>5741750592&#45;&gt;5741844912</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M521.5056,-7433.6966C521.227,-7423.9445 520.8773,-7411.7049 520.5851,-7401.4768\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"524.0809,-7401.2765 520.2966,-7391.3805 517.0837,-7401.4765 524.0809,-7401.2765\"/>\n",
       "</g>\n",
       "<!-- 5741750424 -->\n",
       "<g id=\"node231\" class=\"node\">\n",
       "<title>5741750424</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"673,-7398 619,-7398 619,-7364 673,-7364 673,-7398\"/>\n",
       "<text text-anchor=\"middle\" x=\"646\" y=\"-7370.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (128)</text>\n",
       "</g>\n",
       "<!-- 5741750424&#45;&gt;5741844744 -->\n",
       "<g id=\"edge235\" class=\"edge\">\n",
       "<title>5741750424&#45;&gt;5741844744</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M628.785,-7363.785C619.9935,-7354.9935 609.3186,-7344.3186 600.4885,-7335.4885\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"602.8434,-7332.8936 593.2974,-7328.2974 597.8936,-7337.8434 602.8434,-7332.8936\"/>\n",
       "</g>\n",
       "<!-- 5741750480 -->\n",
       "<g id=\"node232\" class=\"node\">\n",
       "<title>5741750480</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"745,-7398 691,-7398 691,-7364 745,-7364 745,-7398\"/>\n",
       "<text text-anchor=\"middle\" x=\"718\" y=\"-7370.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (128)</text>\n",
       "</g>\n",
       "<!-- 5741750480&#45;&gt;5741844744 -->\n",
       "<g id=\"edge236\" class=\"edge\">\n",
       "<title>5741750480&#45;&gt;5741844744</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M690.8817,-7368.1721C687.886,-7366.7616 684.8792,-7365.3487 682,-7364 659.2428,-7353.3399 633.5003,-7341.3818 613.9703,-7332.3303\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"615.1929,-7329.0393 604.648,-7328.0117 612.2504,-7335.3909 615.1929,-7329.0393\"/>\n",
       "</g>\n",
       "<!-- 5741750144 -->\n",
       "<g id=\"node233\" class=\"node\">\n",
       "<title>5741750144</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"677.4922,-7272 584.5078,-7272 584.5078,-7238 677.4922,-7238 677.4922,-7272\"/>\n",
       "<text text-anchor=\"middle\" x=\"631\" y=\"-7244.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (128, 128, 3, 3)</text>\n",
       "</g>\n",
       "<!-- 5741750144&#45;&gt;5741844520 -->\n",
       "<g id=\"edge237\" class=\"edge\">\n",
       "<title>5741750144&#45;&gt;5741844520</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M603.8463,-7237.8761C585.7008,-7226.4329 562.0292,-7211.5049 544.4671,-7200.4297\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"546.2273,-7197.4019 535.9017,-7195.0281 542.4933,-7203.3229 546.2273,-7197.4019\"/>\n",
       "</g>\n",
       "<!-- 5741749920 -->\n",
       "<g id=\"node234\" class=\"node\">\n",
       "<title>5741749920</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"673,-7202 619,-7202 619,-7168 673,-7168 673,-7202\"/>\n",
       "<text text-anchor=\"middle\" x=\"646\" y=\"-7174.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (128)</text>\n",
       "</g>\n",
       "<!-- 5741749920&#45;&gt;5741844352 -->\n",
       "<g id=\"edge238\" class=\"edge\">\n",
       "<title>5741749920&#45;&gt;5741844352</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M628.785,-7167.785C619.9935,-7158.9935 609.3186,-7148.3186 600.4885,-7139.4885\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"602.8434,-7136.8936 593.2974,-7132.2974 597.8936,-7141.8434 602.8434,-7136.8936\"/>\n",
       "</g>\n",
       "<!-- 5741749976 -->\n",
       "<g id=\"node235\" class=\"node\">\n",
       "<title>5741749976</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"745,-7202 691,-7202 691,-7168 745,-7168 745,-7202\"/>\n",
       "<text text-anchor=\"middle\" x=\"718\" y=\"-7174.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (128)</text>\n",
       "</g>\n",
       "<!-- 5741749976&#45;&gt;5741844352 -->\n",
       "<g id=\"edge239\" class=\"edge\">\n",
       "<title>5741749976&#45;&gt;5741844352</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M690.8817,-7172.1721C687.886,-7170.7616 684.8792,-7169.3487 682,-7168 659.2428,-7157.3399 633.5003,-7145.3818 613.9703,-7136.3303\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"615.1929,-7133.0393 604.648,-7132.0117 612.2504,-7139.3909 615.1929,-7133.0393\"/>\n",
       "</g>\n",
       "<!-- 5741749640 -->\n",
       "<g id=\"node236\" class=\"node\">\n",
       "<title>5741749640</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"677.4922,-7076 584.5078,-7076 584.5078,-7042 677.4922,-7042 677.4922,-7076\"/>\n",
       "<text text-anchor=\"middle\" x=\"631\" y=\"-7048.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (512, 128, 1, 1)</text>\n",
       "</g>\n",
       "<!-- 5741749640&#45;&gt;5741844128 -->\n",
       "<g id=\"edge240\" class=\"edge\">\n",
       "<title>5741749640&#45;&gt;5741844128</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M603.8463,-7041.8761C585.7008,-7030.4329 562.0292,-7015.5049 544.4671,-7004.4297\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"546.2273,-7001.4019 535.9017,-6999.0281 542.4933,-7007.3229 546.2273,-7001.4019\"/>\n",
       "</g>\n",
       "<!-- 5741749416 -->\n",
       "<g id=\"node237\" class=\"node\">\n",
       "<title>5741749416</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"673,-7006 619,-7006 619,-6972 673,-6972 673,-7006\"/>\n",
       "<text text-anchor=\"middle\" x=\"646\" y=\"-6978.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (512)</text>\n",
       "</g>\n",
       "<!-- 5741749416&#45;&gt;5741843960 -->\n",
       "<g id=\"edge241\" class=\"edge\">\n",
       "<title>5741749416&#45;&gt;5741843960</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M628.785,-6971.785C619.9935,-6962.9935 609.3186,-6952.3186 600.4885,-6943.4885\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"602.8434,-6940.8936 593.2974,-6936.2974 597.8936,-6945.8434 602.8434,-6940.8936\"/>\n",
       "</g>\n",
       "<!-- 5741749472 -->\n",
       "<g id=\"node238\" class=\"node\">\n",
       "<title>5741749472</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"745,-7006 691,-7006 691,-6972 745,-6972 745,-7006\"/>\n",
       "<text text-anchor=\"middle\" x=\"718\" y=\"-6978.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (512)</text>\n",
       "</g>\n",
       "<!-- 5741749472&#45;&gt;5741843960 -->\n",
       "<g id=\"edge242\" class=\"edge\">\n",
       "<title>5741749472&#45;&gt;5741843960</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M690.8817,-6976.1721C687.886,-6974.7616 684.8792,-6973.3487 682,-6972 659.2428,-6961.3399 633.5003,-6949.3818 613.9703,-6940.3303\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"615.1929,-6937.0393 604.648,-6936.0117 612.2504,-6943.3909 615.1929,-6937.0393\"/>\n",
       "</g>\n",
       "<!-- 5741748968 -->\n",
       "<g id=\"node239\" class=\"node\">\n",
       "<title>5741748968</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"622.4922,-6824 529.5078,-6824 529.5078,-6790 622.4922,-6790 622.4922,-6824\"/>\n",
       "<text text-anchor=\"middle\" x=\"576\" y=\"-6796.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (128, 512, 1, 1)</text>\n",
       "</g>\n",
       "<!-- 5741748968&#45;&gt;5741843624 -->\n",
       "<g id=\"edge244\" class=\"edge\">\n",
       "<title>5741748968&#45;&gt;5741843624</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M575.5056,-6789.6966C575.227,-6779.9445 574.8773,-6767.7049 574.5851,-6757.4768\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"578.0809,-6757.2765 574.2966,-6747.3805 571.0837,-6757.4765 578.0809,-6757.2765\"/>\n",
       "</g>\n",
       "<!-- 5741748800 -->\n",
       "<g id=\"node240\" class=\"node\">\n",
       "<title>5741748800</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"727,-6754 673,-6754 673,-6720 727,-6720 727,-6754\"/>\n",
       "<text text-anchor=\"middle\" x=\"700\" y=\"-6726.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (128)</text>\n",
       "</g>\n",
       "<!-- 5741748800&#45;&gt;5741843456 -->\n",
       "<g id=\"edge245\" class=\"edge\">\n",
       "<title>5741748800&#45;&gt;5741843456</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M682.785,-6719.785C673.9935,-6710.9935 663.3186,-6700.3186 654.4885,-6691.4885\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"656.8434,-6688.8936 647.2974,-6684.2974 651.8936,-6693.8434 656.8434,-6688.8936\"/>\n",
       "</g>\n",
       "<!-- 5741748856 -->\n",
       "<g id=\"node241\" class=\"node\">\n",
       "<title>5741748856</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"799,-6754 745,-6754 745,-6720 799,-6720 799,-6754\"/>\n",
       "<text text-anchor=\"middle\" x=\"772\" y=\"-6726.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (128)</text>\n",
       "</g>\n",
       "<!-- 5741748856&#45;&gt;5741843456 -->\n",
       "<g id=\"edge246\" class=\"edge\">\n",
       "<title>5741748856&#45;&gt;5741843456</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M744.8817,-6724.1721C741.886,-6722.7616 738.8792,-6721.3487 736,-6720 713.2428,-6709.3399 687.5003,-6697.3818 667.9703,-6688.3303\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"669.1929,-6685.0393 658.648,-6684.0117 666.2504,-6691.3909 669.1929,-6685.0393\"/>\n",
       "</g>\n",
       "<!-- 5741748520 -->\n",
       "<g id=\"node242\" class=\"node\">\n",
       "<title>5741748520</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"731.4922,-6628 638.5078,-6628 638.5078,-6594 731.4922,-6594 731.4922,-6628\"/>\n",
       "<text text-anchor=\"middle\" x=\"685\" y=\"-6600.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (128, 128, 3, 3)</text>\n",
       "</g>\n",
       "<!-- 5741748520&#45;&gt;5741843232 -->\n",
       "<g id=\"edge247\" class=\"edge\">\n",
       "<title>5741748520&#45;&gt;5741843232</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M657.8463,-6593.8761C639.7008,-6582.4329 616.0292,-6567.5049 598.4671,-6556.4297\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"600.2273,-6553.4019 589.9017,-6551.0281 596.4933,-6559.3229 600.2273,-6553.4019\"/>\n",
       "</g>\n",
       "<!-- 5741748296 -->\n",
       "<g id=\"node243\" class=\"node\">\n",
       "<title>5741748296</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"727,-6558 673,-6558 673,-6524 727,-6524 727,-6558\"/>\n",
       "<text text-anchor=\"middle\" x=\"700\" y=\"-6530.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (128)</text>\n",
       "</g>\n",
       "<!-- 5741748296&#45;&gt;5741843064 -->\n",
       "<g id=\"edge248\" class=\"edge\">\n",
       "<title>5741748296&#45;&gt;5741843064</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M682.785,-6523.785C673.9935,-6514.9935 663.3186,-6504.3186 654.4885,-6495.4885\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"656.8434,-6492.8936 647.2974,-6488.2974 651.8936,-6497.8434 656.8434,-6492.8936\"/>\n",
       "</g>\n",
       "<!-- 5741748352 -->\n",
       "<g id=\"node244\" class=\"node\">\n",
       "<title>5741748352</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"799,-6558 745,-6558 745,-6524 799,-6524 799,-6558\"/>\n",
       "<text text-anchor=\"middle\" x=\"772\" y=\"-6530.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (128)</text>\n",
       "</g>\n",
       "<!-- 5741748352&#45;&gt;5741843064 -->\n",
       "<g id=\"edge249\" class=\"edge\">\n",
       "<title>5741748352&#45;&gt;5741843064</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M744.8817,-6528.1721C741.886,-6526.7616 738.8792,-6525.3487 736,-6524 713.2428,-6513.3399 687.5003,-6501.3818 667.9703,-6492.3303\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"669.1929,-6489.0393 658.648,-6488.0117 666.2504,-6495.3909 669.1929,-6489.0393\"/>\n",
       "</g>\n",
       "<!-- 5741743856 -->\n",
       "<g id=\"node245\" class=\"node\">\n",
       "<title>5741743856</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"731.4922,-6432 638.5078,-6432 638.5078,-6398 731.4922,-6398 731.4922,-6432\"/>\n",
       "<text text-anchor=\"middle\" x=\"685\" y=\"-6404.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (512, 128, 1, 1)</text>\n",
       "</g>\n",
       "<!-- 5741743856&#45;&gt;5741842840 -->\n",
       "<g id=\"edge250\" class=\"edge\">\n",
       "<title>5741743856&#45;&gt;5741842840</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M657.8463,-6397.8761C639.7008,-6386.4329 616.0292,-6371.5049 598.4671,-6360.4297\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"600.2273,-6357.4019 589.9017,-6355.0281 596.4933,-6363.3229 600.2273,-6357.4019\"/>\n",
       "</g>\n",
       "<!-- 5741743632 -->\n",
       "<g id=\"node246\" class=\"node\">\n",
       "<title>5741743632</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"727,-6362 673,-6362 673,-6328 727,-6328 727,-6362\"/>\n",
       "<text text-anchor=\"middle\" x=\"700\" y=\"-6334.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (512)</text>\n",
       "</g>\n",
       "<!-- 5741743632&#45;&gt;5741842672 -->\n",
       "<g id=\"edge251\" class=\"edge\">\n",
       "<title>5741743632&#45;&gt;5741842672</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M682.785,-6327.785C673.9935,-6318.9935 663.3186,-6308.3186 654.4885,-6299.4885\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"656.8434,-6296.8936 647.2974,-6292.2974 651.8936,-6301.8434 656.8434,-6296.8936\"/>\n",
       "</g>\n",
       "<!-- 5741743688 -->\n",
       "<g id=\"node247\" class=\"node\">\n",
       "<title>5741743688</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"799,-6362 745,-6362 745,-6328 799,-6328 799,-6362\"/>\n",
       "<text text-anchor=\"middle\" x=\"772\" y=\"-6334.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (512)</text>\n",
       "</g>\n",
       "<!-- 5741743688&#45;&gt;5741842672 -->\n",
       "<g id=\"edge252\" class=\"edge\">\n",
       "<title>5741743688&#45;&gt;5741842672</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M744.8817,-6332.1721C741.886,-6330.7616 738.8792,-6329.3487 736,-6328 713.2428,-6317.3399 687.5003,-6305.3818 667.9703,-6296.3303\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"669.1929,-6293.0393 658.648,-6292.0117 666.2504,-6299.3909 669.1929,-6293.0393\"/>\n",
       "</g>\n",
       "<!-- 5741743184 -->\n",
       "<g id=\"node248\" class=\"node\">\n",
       "<title>5741743184</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"676.4922,-6180 583.5078,-6180 583.5078,-6146 676.4922,-6146 676.4922,-6180\"/>\n",
       "<text text-anchor=\"middle\" x=\"630\" y=\"-6152.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (256, 512, 1, 1)</text>\n",
       "</g>\n",
       "<!-- 5741743184&#45;&gt;5741838120 -->\n",
       "<g id=\"edge254\" class=\"edge\">\n",
       "<title>5741743184&#45;&gt;5741838120</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M624.5618,-6145.6966C621.4642,-6135.8407 617.5682,-6123.4442 614.3332,-6113.151\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"617.5998,-6111.8711 611.2625,-6103.3805 610.9218,-6113.9699 617.5998,-6111.8711\"/>\n",
       "</g>\n",
       "<!-- 5741742960 -->\n",
       "<g id=\"node249\" class=\"node\">\n",
       "<title>5741742960</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"761,-6110 707,-6110 707,-6076 761,-6076 761,-6110\"/>\n",
       "<text text-anchor=\"middle\" x=\"734\" y=\"-6082.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (256)</text>\n",
       "</g>\n",
       "<!-- 5741742960&#45;&gt;5741837952 -->\n",
       "<g id=\"edge255\" class=\"edge\">\n",
       "<title>5741742960&#45;&gt;5741837952</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M716.785,-6075.785C707.9935,-6066.9935 697.3186,-6056.3186 688.4885,-6047.4885\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"690.8434,-6044.8936 681.2974,-6040.2974 685.8936,-6049.8434 690.8434,-6044.8936\"/>\n",
       "</g>\n",
       "<!-- 5741743016 -->\n",
       "<g id=\"node250\" class=\"node\">\n",
       "<title>5741743016</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"833,-6110 779,-6110 779,-6076 833,-6076 833,-6110\"/>\n",
       "<text text-anchor=\"middle\" x=\"806\" y=\"-6082.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (256)</text>\n",
       "</g>\n",
       "<!-- 5741743016&#45;&gt;5741837952 -->\n",
       "<g id=\"edge256\" class=\"edge\">\n",
       "<title>5741743016&#45;&gt;5741837952</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M778.8817,-6080.1721C775.886,-6078.7616 772.8792,-6077.3487 770,-6076 747.2428,-6065.3399 721.5003,-6053.3818 701.9703,-6044.3303\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"703.1929,-6041.0393 692.648,-6040.0117 700.2504,-6047.3909 703.1929,-6041.0393\"/>\n",
       "</g>\n",
       "<!-- 5741742680 -->\n",
       "<g id=\"node251\" class=\"node\">\n",
       "<title>5741742680</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"731.4922,-5984 638.5078,-5984 638.5078,-5950 731.4922,-5950 731.4922,-5984\"/>\n",
       "<text text-anchor=\"middle\" x=\"685\" y=\"-5956.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (256, 256, 3, 3)</text>\n",
       "</g>\n",
       "<!-- 5741742680&#45;&gt;5741837728 -->\n",
       "<g id=\"edge257\" class=\"edge\">\n",
       "<title>5741742680&#45;&gt;5741837728</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M657.8463,-5949.8761C639.7008,-5938.4329 616.0292,-5923.5049 598.4671,-5912.4297\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"600.2273,-5909.4019 589.9017,-5907.0281 596.4933,-5915.3229 600.2273,-5909.4019\"/>\n",
       "</g>\n",
       "<!-- 5741742456 -->\n",
       "<g id=\"node252\" class=\"node\">\n",
       "<title>5741742456</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"727,-5914 673,-5914 673,-5880 727,-5880 727,-5914\"/>\n",
       "<text text-anchor=\"middle\" x=\"700\" y=\"-5886.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (256)</text>\n",
       "</g>\n",
       "<!-- 5741742456&#45;&gt;5741837616 -->\n",
       "<g id=\"edge258\" class=\"edge\">\n",
       "<title>5741742456&#45;&gt;5741837616</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M682.785,-5879.785C673.9935,-5870.9935 663.3186,-5860.3186 654.4885,-5851.4885\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"656.8434,-5848.8936 647.2974,-5844.2974 651.8936,-5853.8434 656.8434,-5848.8936\"/>\n",
       "</g>\n",
       "<!-- 5741742512 -->\n",
       "<g id=\"node253\" class=\"node\">\n",
       "<title>5741742512</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"799,-5914 745,-5914 745,-5880 799,-5880 799,-5914\"/>\n",
       "<text text-anchor=\"middle\" x=\"772\" y=\"-5886.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (256)</text>\n",
       "</g>\n",
       "<!-- 5741742512&#45;&gt;5741837616 -->\n",
       "<g id=\"edge259\" class=\"edge\">\n",
       "<title>5741742512&#45;&gt;5741837616</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M744.8817,-5884.1721C741.886,-5882.7616 738.8792,-5881.3487 736,-5880 713.2428,-5869.3399 687.5003,-5857.3818 667.9703,-5848.3303\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"669.1929,-5845.0393 658.648,-5844.0117 666.2504,-5851.3909 669.1929,-5845.0393\"/>\n",
       "</g>\n",
       "<!-- 5741742176 -->\n",
       "<g id=\"node254\" class=\"node\">\n",
       "<title>5741742176</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"703.4922,-5788 604.5078,-5788 604.5078,-5754 703.4922,-5754 703.4922,-5788\"/>\n",
       "<text text-anchor=\"middle\" x=\"654\" y=\"-5760.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (1024, 256, 1, 1)</text>\n",
       "</g>\n",
       "<!-- 5741742176&#45;&gt;5741837392 -->\n",
       "<g id=\"edge260\" class=\"edge\">\n",
       "<title>5741742176&#45;&gt;5741837392</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M626.1125,-5753.8761C607.4765,-5742.4329 583.1651,-5727.5049 565.1283,-5716.4297\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"566.6847,-5713.2782 556.3315,-5711.0281 563.0218,-5719.2434 566.6847,-5713.2782\"/>\n",
       "</g>\n",
       "<!-- 5741741952 -->\n",
       "<g id=\"node255\" class=\"node\">\n",
       "<title>5741741952</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"693,-5718 639,-5718 639,-5684 693,-5684 693,-5718\"/>\n",
       "<text text-anchor=\"middle\" x=\"666\" y=\"-5690.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (1024)</text>\n",
       "</g>\n",
       "<!-- 5741741952&#45;&gt;5741837224 -->\n",
       "<g id=\"edge261\" class=\"edge\">\n",
       "<title>5741741952&#45;&gt;5741837224</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M648.785,-5683.785C639.9935,-5674.9935 629.3186,-5664.3186 620.4885,-5655.4885\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"622.8434,-5652.8936 613.2974,-5648.2974 617.8936,-5657.8434 622.8434,-5652.8936\"/>\n",
       "</g>\n",
       "<!-- 5741742008 -->\n",
       "<g id=\"node256\" class=\"node\">\n",
       "<title>5741742008</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"765,-5718 711,-5718 711,-5684 765,-5684 765,-5718\"/>\n",
       "<text text-anchor=\"middle\" x=\"738\" y=\"-5690.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (1024)</text>\n",
       "</g>\n",
       "<!-- 5741742008&#45;&gt;5741837224 -->\n",
       "<g id=\"edge262\" class=\"edge\">\n",
       "<title>5741742008&#45;&gt;5741837224</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M710.8817,-5688.1721C707.886,-5686.7616 704.8792,-5685.3487 702,-5684 679.2428,-5673.3399 653.5003,-5661.3818 633.9703,-5652.3303\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"635.1929,-5649.0393 624.648,-5648.0117 632.2504,-5655.3909 635.1929,-5649.0393\"/>\n",
       "</g>\n",
       "<!-- 5741837280 -->\n",
       "<g id=\"node257\" class=\"node\">\n",
       "<title>5741837280</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"440.1177,-6040 287.8823,-6040 287.8823,-6020 440.1177,-6020 440.1177,-6040\"/>\n",
       "<text text-anchor=\"middle\" x=\"364\" y=\"-6026.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">NativeBatchNormBackward</text>\n",
       "</g>\n",
       "<!-- 5741837280&#45;&gt;5741837112 -->\n",
       "<g id=\"edge263\" class=\"edge\">\n",
       "<title>5741837280&#45;&gt;5741837112</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M373.3161,-6019.8579C391.7258,-5998.7161 431,-5947.6751 431,-5897 431,-5897 431,-5897 431,-5701 431,-5662.5157 454.709,-5622.7842 470.7072,-5600.355\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"473.6667,-5602.2395 476.7986,-5592.1181 468.0385,-5598.0773 473.6667,-5602.2395\"/>\n",
       "</g>\n",
       "<!-- 5741837448&#45;&gt;5741837280 -->\n",
       "<g id=\"edge264\" class=\"edge\">\n",
       "<title>5741837448&#45;&gt;5741837280</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M416.878,-6082.878C407.3823,-6073.3823 392.9794,-6058.9794 381.602,-6047.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"383.8522,-6044.9024 374.3062,-6040.3062 378.9024,-6049.8522 383.8522,-6044.9024\"/>\n",
       "</g>\n",
       "<!-- 5741742344 -->\n",
       "<g id=\"node259\" class=\"node\">\n",
       "<title>5741742344</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"454.4922,-6180 355.5078,-6180 355.5078,-6146 454.4922,-6146 454.4922,-6180\"/>\n",
       "<text text-anchor=\"middle\" x=\"405\" y=\"-6152.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (1024, 512, 1, 1)</text>\n",
       "</g>\n",
       "<!-- 5741742344&#45;&gt;5741837448 -->\n",
       "<g id=\"edge266\" class=\"edge\">\n",
       "<title>5741742344&#45;&gt;5741837448</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M410.4382,-6145.6966C413.5358,-6135.8407 417.4318,-6123.4442 420.6668,-6113.151\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"424.0782,-6113.9699 423.7375,-6103.3805 417.4002,-6111.8711 424.0782,-6113.9699\"/>\n",
       "</g>\n",
       "<!-- 5741742232 -->\n",
       "<g id=\"node260\" class=\"node\">\n",
       "<title>5741742232</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"256,-6110 202,-6110 202,-6076 256,-6076 256,-6110\"/>\n",
       "<text text-anchor=\"middle\" x=\"229\" y=\"-6082.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (1024)</text>\n",
       "</g>\n",
       "<!-- 5741742232&#45;&gt;5741837280 -->\n",
       "<g id=\"edge267\" class=\"edge\">\n",
       "<title>5741742232&#45;&gt;5741837280</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M256.1183,-6080.1721C259.114,-6078.7616 262.1208,-6077.3487 265,-6076 287.7572,-6065.3399 313.4997,-6053.3818 333.0297,-6044.3303\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"334.7496,-6047.3909 342.352,-6040.0117 331.8071,-6041.0393 334.7496,-6047.3909\"/>\n",
       "</g>\n",
       "<!-- 5741742568 -->\n",
       "<g id=\"node261\" class=\"node\">\n",
       "<title>5741742568</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"328,-6110 274,-6110 274,-6076 328,-6076 328,-6110\"/>\n",
       "<text text-anchor=\"middle\" x=\"301\" y=\"-6082.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (1024)</text>\n",
       "</g>\n",
       "<!-- 5741742568&#45;&gt;5741837280 -->\n",
       "<g id=\"edge268\" class=\"edge\">\n",
       "<title>5741742568&#45;&gt;5741837280</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M318.215,-6075.785C327.0065,-6066.9935 337.6814,-6056.3186 346.5115,-6047.4885\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"349.1064,-6049.8434 353.7026,-6040.2974 344.1566,-6044.8936 349.1064,-6049.8434\"/>\n",
       "</g>\n",
       "<!-- 5741741504 -->\n",
       "<g id=\"node262\" class=\"node\">\n",
       "<title>5741741504</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"648.4922,-5536 549.5078,-5536 549.5078,-5502 648.4922,-5502 648.4922,-5536\"/>\n",
       "<text text-anchor=\"middle\" x=\"599\" y=\"-5508.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (256, 1024, 1, 1)</text>\n",
       "</g>\n",
       "<!-- 5741741504&#45;&gt;5741836944 -->\n",
       "<g id=\"edge269\" class=\"edge\">\n",
       "<title>5741741504&#45;&gt;5741836944</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M597.764,-5501.6966C597.0675,-5491.9445 596.1932,-5479.7049 595.4626,-5469.4768\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"598.9451,-5469.1057 594.7415,-5459.3805 591.9629,-5469.6045 598.9451,-5469.1057\"/>\n",
       "</g>\n",
       "<!-- 5741741336 -->\n",
       "<g id=\"node263\" class=\"node\">\n",
       "<title>5741741336</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"747,-5466 693,-5466 693,-5432 747,-5432 747,-5466\"/>\n",
       "<text text-anchor=\"middle\" x=\"720\" y=\"-5438.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (256)</text>\n",
       "</g>\n",
       "<!-- 5741741336&#45;&gt;5741836832 -->\n",
       "<g id=\"edge270\" class=\"edge\">\n",
       "<title>5741741336&#45;&gt;5741836832</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M702.785,-5431.785C693.9935,-5422.9935 683.3186,-5412.3186 674.4885,-5403.4885\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"676.8434,-5400.8936 667.2974,-5396.2974 671.8936,-5405.8434 676.8434,-5400.8936\"/>\n",
       "</g>\n",
       "<!-- 5741741392 -->\n",
       "<g id=\"node264\" class=\"node\">\n",
       "<title>5741741392</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"819,-5466 765,-5466 765,-5432 819,-5432 819,-5466\"/>\n",
       "<text text-anchor=\"middle\" x=\"792\" y=\"-5438.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (256)</text>\n",
       "</g>\n",
       "<!-- 5741741392&#45;&gt;5741836832 -->\n",
       "<g id=\"edge271\" class=\"edge\">\n",
       "<title>5741741392&#45;&gt;5741836832</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M764.8817,-5436.1721C761.886,-5434.7616 758.8792,-5433.3487 756,-5432 733.2428,-5421.3399 707.5003,-5409.3818 687.9703,-5400.3303\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"689.1929,-5397.0393 678.648,-5396.0117 686.2504,-5403.3909 689.1929,-5397.0393\"/>\n",
       "</g>\n",
       "<!-- 5741741056 -->\n",
       "<g id=\"node265\" class=\"node\">\n",
       "<title>5741741056</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"751.4922,-5340 658.5078,-5340 658.5078,-5306 751.4922,-5306 751.4922,-5340\"/>\n",
       "<text text-anchor=\"middle\" x=\"705\" y=\"-5312.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (256, 256, 3, 3)</text>\n",
       "</g>\n",
       "<!-- 5741741056&#45;&gt;5741836608 -->\n",
       "<g id=\"edge272\" class=\"edge\">\n",
       "<title>5741741056&#45;&gt;5741836608</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M677.8463,-5305.8761C659.7008,-5294.4329 636.0292,-5279.5049 618.4671,-5268.4297\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"620.2273,-5265.4019 609.9017,-5263.0281 616.4933,-5271.3229 620.2273,-5265.4019\"/>\n",
       "</g>\n",
       "<!-- 5741740832 -->\n",
       "<g id=\"node266\" class=\"node\">\n",
       "<title>5741740832</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"747,-5270 693,-5270 693,-5236 747,-5236 747,-5270\"/>\n",
       "<text text-anchor=\"middle\" x=\"720\" y=\"-5242.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (256)</text>\n",
       "</g>\n",
       "<!-- 5741740832&#45;&gt;5741836496 -->\n",
       "<g id=\"edge273\" class=\"edge\">\n",
       "<title>5741740832&#45;&gt;5741836496</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M702.785,-5235.785C693.9935,-5226.9935 683.3186,-5216.3186 674.4885,-5207.4885\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"676.8434,-5204.8936 667.2974,-5200.2974 671.8936,-5209.8434 676.8434,-5204.8936\"/>\n",
       "</g>\n",
       "<!-- 5741740888 -->\n",
       "<g id=\"node267\" class=\"node\">\n",
       "<title>5741740888</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"819,-5270 765,-5270 765,-5236 819,-5236 819,-5270\"/>\n",
       "<text text-anchor=\"middle\" x=\"792\" y=\"-5242.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (256)</text>\n",
       "</g>\n",
       "<!-- 5741740888&#45;&gt;5741836496 -->\n",
       "<g id=\"edge274\" class=\"edge\">\n",
       "<title>5741740888&#45;&gt;5741836496</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M764.8817,-5240.1721C761.886,-5238.7616 758.8792,-5237.3487 756,-5236 733.2428,-5225.3399 707.5003,-5213.3818 687.9703,-5204.3303\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"689.1929,-5201.0393 678.648,-5200.0117 686.2504,-5207.3909 689.1929,-5201.0393\"/>\n",
       "</g>\n",
       "<!-- 5741740552 -->\n",
       "<g id=\"node268\" class=\"node\">\n",
       "<title>5741740552</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"757.4922,-5144 658.5078,-5144 658.5078,-5110 757.4922,-5110 757.4922,-5144\"/>\n",
       "<text text-anchor=\"middle\" x=\"708\" y=\"-5116.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (1024, 256, 1, 1)</text>\n",
       "</g>\n",
       "<!-- 5741740552&#45;&gt;5741836272 -->\n",
       "<g id=\"edge275\" class=\"edge\">\n",
       "<title>5741740552&#45;&gt;5741836272</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M680.1125,-5109.8761C661.4765,-5098.4329 637.1651,-5083.5049 619.1283,-5072.4297\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"620.6847,-5069.2782 610.3315,-5067.0281 617.0218,-5075.2434 620.6847,-5069.2782\"/>\n",
       "</g>\n",
       "<!-- 5741740328 -->\n",
       "<g id=\"node269\" class=\"node\">\n",
       "<title>5741740328</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"747,-5074 693,-5074 693,-5040 747,-5040 747,-5074\"/>\n",
       "<text text-anchor=\"middle\" x=\"720\" y=\"-5046.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (1024)</text>\n",
       "</g>\n",
       "<!-- 5741740328&#45;&gt;5741836104 -->\n",
       "<g id=\"edge276\" class=\"edge\">\n",
       "<title>5741740328&#45;&gt;5741836104</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M702.785,-5039.785C693.9935,-5030.9935 683.3186,-5020.3186 674.4885,-5011.4885\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"676.8434,-5008.8936 667.2974,-5004.2974 671.8936,-5013.8434 676.8434,-5008.8936\"/>\n",
       "</g>\n",
       "<!-- 5741740384 -->\n",
       "<g id=\"node270\" class=\"node\">\n",
       "<title>5741740384</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"819,-5074 765,-5074 765,-5040 819,-5040 819,-5074\"/>\n",
       "<text text-anchor=\"middle\" x=\"792\" y=\"-5046.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (1024)</text>\n",
       "</g>\n",
       "<!-- 5741740384&#45;&gt;5741836104 -->\n",
       "<g id=\"edge277\" class=\"edge\">\n",
       "<title>5741740384&#45;&gt;5741836104</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M764.8817,-5044.1721C761.886,-5042.7616 758.8792,-5041.3487 756,-5040 733.2428,-5029.3399 707.5003,-5017.3818 687.9703,-5008.3303\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"689.1929,-5005.0393 678.648,-5004.0117 686.2504,-5011.3909 689.1929,-5005.0393\"/>\n",
       "</g>\n",
       "<!-- 5741735720 -->\n",
       "<g id=\"node271\" class=\"node\">\n",
       "<title>5741735720</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"702.4922,-4892 603.5078,-4892 603.5078,-4858 702.4922,-4858 702.4922,-4892\"/>\n",
       "<text text-anchor=\"middle\" x=\"653\" y=\"-4864.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (256, 1024, 1, 1)</text>\n",
       "</g>\n",
       "<!-- 5741735720&#45;&gt;5741835824 -->\n",
       "<g id=\"edge279\" class=\"edge\">\n",
       "<title>5741735720&#45;&gt;5741835824</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M651.764,-4857.6966C651.0675,-4847.9445 650.1932,-4835.7049 649.4626,-4825.4768\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"652.9451,-4825.1057 648.7415,-4815.3805 645.9629,-4825.6045 652.9451,-4825.1057\"/>\n",
       "</g>\n",
       "<!-- 4982833104 -->\n",
       "<g id=\"node272\" class=\"node\">\n",
       "<title>4982833104</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"801,-4822 747,-4822 747,-4788 801,-4788 801,-4822\"/>\n",
       "<text text-anchor=\"middle\" x=\"774\" y=\"-4794.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (256)</text>\n",
       "</g>\n",
       "<!-- 4982833104&#45;&gt;5741835712 -->\n",
       "<g id=\"edge280\" class=\"edge\">\n",
       "<title>4982833104&#45;&gt;5741835712</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M756.785,-4787.785C747.9935,-4778.9935 737.3186,-4768.3186 728.4885,-4759.4885\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"730.8434,-4756.8936 721.2974,-4752.2974 725.8936,-4761.8434 730.8434,-4756.8936\"/>\n",
       "</g>\n",
       "<!-- 5741735608 -->\n",
       "<g id=\"node273\" class=\"node\">\n",
       "<title>5741735608</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"873,-4822 819,-4822 819,-4788 873,-4788 873,-4822\"/>\n",
       "<text text-anchor=\"middle\" x=\"846\" y=\"-4794.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (256)</text>\n",
       "</g>\n",
       "<!-- 5741735608&#45;&gt;5741835712 -->\n",
       "<g id=\"edge281\" class=\"edge\">\n",
       "<title>5741735608&#45;&gt;5741835712</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M818.8817,-4792.1721C815.886,-4790.7616 812.8792,-4789.3487 810,-4788 787.2428,-4777.3399 761.5003,-4765.3818 741.9703,-4756.3303\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"743.1929,-4753.0393 732.648,-4752.0117 740.2504,-4759.3909 743.1929,-4753.0393\"/>\n",
       "</g>\n",
       "<!-- 4900956592 -->\n",
       "<g id=\"node274\" class=\"node\">\n",
       "<title>4900956592</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"805.4922,-4696 712.5078,-4696 712.5078,-4662 805.4922,-4662 805.4922,-4696\"/>\n",
       "<text text-anchor=\"middle\" x=\"759\" y=\"-4668.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (256, 256, 3, 3)</text>\n",
       "</g>\n",
       "<!-- 4900956592&#45;&gt;5741835488 -->\n",
       "<g id=\"edge282\" class=\"edge\">\n",
       "<title>4900956592&#45;&gt;5741835488</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M731.8463,-4661.8761C713.7008,-4650.4329 690.0292,-4635.5049 672.4671,-4624.4297\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"674.2273,-4621.4019 663.9017,-4619.0281 670.4933,-4627.3229 674.2273,-4621.4019\"/>\n",
       "</g>\n",
       "<!-- 5036560568 -->\n",
       "<g id=\"node275\" class=\"node\">\n",
       "<title>5036560568</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"801,-4626 747,-4626 747,-4592 801,-4592 801,-4626\"/>\n",
       "<text text-anchor=\"middle\" x=\"774\" y=\"-4598.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (256)</text>\n",
       "</g>\n",
       "<!-- 5036560568&#45;&gt;5741835376 -->\n",
       "<g id=\"edge283\" class=\"edge\">\n",
       "<title>5036560568&#45;&gt;5741835376</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M756.785,-4591.785C747.9935,-4582.9935 737.3186,-4572.3186 728.4885,-4563.4885\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"730.8434,-4560.8936 721.2974,-4556.2974 725.8936,-4565.8434 730.8434,-4560.8936\"/>\n",
       "</g>\n",
       "<!-- 5036560680 -->\n",
       "<g id=\"node276\" class=\"node\">\n",
       "<title>5036560680</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"873,-4626 819,-4626 819,-4592 873,-4592 873,-4626\"/>\n",
       "<text text-anchor=\"middle\" x=\"846\" y=\"-4598.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (256)</text>\n",
       "</g>\n",
       "<!-- 5036560680&#45;&gt;5741835376 -->\n",
       "<g id=\"edge284\" class=\"edge\">\n",
       "<title>5036560680&#45;&gt;5741835376</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M818.8817,-4596.1721C815.886,-4594.7616 812.8792,-4593.3487 810,-4592 787.2428,-4581.3399 761.5003,-4569.3818 741.9703,-4560.3303\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"743.1929,-4557.0393 732.648,-4556.0117 740.2504,-4563.3909 743.1929,-4557.0393\"/>\n",
       "</g>\n",
       "<!-- 4875345032 -->\n",
       "<g id=\"node277\" class=\"node\">\n",
       "<title>4875345032</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"811.4922,-4500 712.5078,-4500 712.5078,-4466 811.4922,-4466 811.4922,-4500\"/>\n",
       "<text text-anchor=\"middle\" x=\"762\" y=\"-4472.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (1024, 256, 1, 1)</text>\n",
       "</g>\n",
       "<!-- 4875345032&#45;&gt;5741835152 -->\n",
       "<g id=\"edge285\" class=\"edge\">\n",
       "<title>4875345032&#45;&gt;5741835152</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M734.1125,-4465.8761C715.4765,-4454.4329 691.1651,-4439.5049 673.1283,-4428.4297\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"674.6847,-4425.2782 664.3315,-4423.0281 671.0218,-4431.2434 674.6847,-4425.2782\"/>\n",
       "</g>\n",
       "<!-- 5547555584 -->\n",
       "<g id=\"node278\" class=\"node\">\n",
       "<title>5547555584</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"801,-4430 747,-4430 747,-4396 801,-4396 801,-4430\"/>\n",
       "<text text-anchor=\"middle\" x=\"774\" y=\"-4402.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (1024)</text>\n",
       "</g>\n",
       "<!-- 5547555584&#45;&gt;5741834984 -->\n",
       "<g id=\"edge286\" class=\"edge\">\n",
       "<title>5547555584&#45;&gt;5741834984</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M756.785,-4395.785C747.9935,-4386.9935 737.3186,-4376.3186 728.4885,-4367.4885\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"730.8434,-4364.8936 721.2974,-4360.2974 725.8936,-4369.8434 730.8434,-4364.8936\"/>\n",
       "</g>\n",
       "<!-- 5547555696 -->\n",
       "<g id=\"node279\" class=\"node\">\n",
       "<title>5547555696</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"873,-4430 819,-4430 819,-4396 873,-4396 873,-4430\"/>\n",
       "<text text-anchor=\"middle\" x=\"846\" y=\"-4402.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (1024)</text>\n",
       "</g>\n",
       "<!-- 5547555696&#45;&gt;5741834984 -->\n",
       "<g id=\"edge287\" class=\"edge\">\n",
       "<title>5547555696&#45;&gt;5741834984</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M818.8817,-4400.1721C815.886,-4398.7616 812.8792,-4397.3487 810,-4396 787.2428,-4385.3399 761.5003,-4373.3818 741.9703,-4364.3303\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"743.1929,-4361.0393 732.648,-4360.0117 740.2504,-4367.3909 743.1929,-4361.0393\"/>\n",
       "</g>\n",
       "<!-- 5660022936 -->\n",
       "<g id=\"node280\" class=\"node\">\n",
       "<title>5660022936</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"756.4922,-4248 657.5078,-4248 657.5078,-4214 756.4922,-4214 756.4922,-4248\"/>\n",
       "<text text-anchor=\"middle\" x=\"707\" y=\"-4220.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (256, 1024, 1, 1)</text>\n",
       "</g>\n",
       "<!-- 5660022936&#45;&gt;5741834704 -->\n",
       "<g id=\"edge289\" class=\"edge\">\n",
       "<title>5660022936&#45;&gt;5741834704</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M705.764,-4213.6966C705.0675,-4203.9445 704.1932,-4191.7049 703.4626,-4181.4768\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"706.9451,-4181.1057 702.7415,-4171.3805 699.9629,-4181.6045 706.9451,-4181.1057\"/>\n",
       "</g>\n",
       "<!-- 5660021592 -->\n",
       "<g id=\"node281\" class=\"node\">\n",
       "<title>5660021592</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"855,-4178 801,-4178 801,-4144 855,-4144 855,-4178\"/>\n",
       "<text text-anchor=\"middle\" x=\"828\" y=\"-4150.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (256)</text>\n",
       "</g>\n",
       "<!-- 5660021592&#45;&gt;5741834592 -->\n",
       "<g id=\"edge290\" class=\"edge\">\n",
       "<title>5660021592&#45;&gt;5741834592</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M810.785,-4143.785C801.9935,-4134.9935 791.3186,-4124.3186 782.4885,-4115.4885\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"784.8434,-4112.8936 775.2974,-4108.2974 779.8936,-4117.8434 784.8434,-4112.8936\"/>\n",
       "</g>\n",
       "<!-- 5660021200 -->\n",
       "<g id=\"node282\" class=\"node\">\n",
       "<title>5660021200</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"927,-4178 873,-4178 873,-4144 927,-4144 927,-4178\"/>\n",
       "<text text-anchor=\"middle\" x=\"900\" y=\"-4150.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (256)</text>\n",
       "</g>\n",
       "<!-- 5660021200&#45;&gt;5741834592 -->\n",
       "<g id=\"edge291\" class=\"edge\">\n",
       "<title>5660021200&#45;&gt;5741834592</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M872.8817,-4148.1721C869.886,-4146.7616 866.8792,-4145.3487 864,-4144 841.2428,-4133.3399 815.5003,-4121.3818 795.9703,-4112.3303\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"797.1929,-4109.0393 786.648,-4108.0117 794.2504,-4115.3909 797.1929,-4109.0393\"/>\n",
       "</g>\n",
       "<!-- 5660022152 -->\n",
       "<g id=\"node283\" class=\"node\">\n",
       "<title>5660022152</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"859.4922,-4052 766.5078,-4052 766.5078,-4018 859.4922,-4018 859.4922,-4052\"/>\n",
       "<text text-anchor=\"middle\" x=\"813\" y=\"-4024.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (256, 256, 3, 3)</text>\n",
       "</g>\n",
       "<!-- 5660022152&#45;&gt;5741834368 -->\n",
       "<g id=\"edge292\" class=\"edge\">\n",
       "<title>5660022152&#45;&gt;5741834368</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M785.8463,-4017.8761C767.7008,-4006.4329 744.0292,-3991.5049 726.4671,-3980.4297\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"728.2273,-3977.4019 717.9017,-3975.0281 724.4933,-3983.3229 728.2273,-3977.4019\"/>\n",
       "</g>\n",
       "<!-- 5660022544 -->\n",
       "<g id=\"node284\" class=\"node\">\n",
       "<title>5660022544</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"855,-3982 801,-3982 801,-3948 855,-3948 855,-3982\"/>\n",
       "<text text-anchor=\"middle\" x=\"828\" y=\"-3954.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (256)</text>\n",
       "</g>\n",
       "<!-- 5660022544&#45;&gt;5741768600 -->\n",
       "<g id=\"edge293\" class=\"edge\">\n",
       "<title>5660022544&#45;&gt;5741768600</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M810.785,-3947.785C801.9935,-3938.9935 791.3186,-3928.3186 782.4885,-3919.4885\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"784.8434,-3916.8936 775.2974,-3912.2974 779.8936,-3921.8434 784.8434,-3916.8936\"/>\n",
       "</g>\n",
       "<!-- 5660021088 -->\n",
       "<g id=\"node285\" class=\"node\">\n",
       "<title>5660021088</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"927,-3982 873,-3982 873,-3948 927,-3948 927,-3982\"/>\n",
       "<text text-anchor=\"middle\" x=\"900\" y=\"-3954.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (256)</text>\n",
       "</g>\n",
       "<!-- 5660021088&#45;&gt;5741768600 -->\n",
       "<g id=\"edge294\" class=\"edge\">\n",
       "<title>5660021088&#45;&gt;5741768600</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M872.8817,-3952.1721C869.886,-3950.7616 866.8792,-3949.3487 864,-3948 841.2428,-3937.3399 815.5003,-3925.3818 795.9703,-3916.3303\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"797.1929,-3913.0393 786.648,-3912.0117 794.2504,-3919.3909 797.1929,-3913.0393\"/>\n",
       "</g>\n",
       "<!-- 5660022320 -->\n",
       "<g id=\"node286\" class=\"node\">\n",
       "<title>5660022320</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"865.4922,-3856 766.5078,-3856 766.5078,-3822 865.4922,-3822 865.4922,-3856\"/>\n",
       "<text text-anchor=\"middle\" x=\"816\" y=\"-3828.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (1024, 256, 1, 1)</text>\n",
       "</g>\n",
       "<!-- 5660022320&#45;&gt;5741768432 -->\n",
       "<g id=\"edge295\" class=\"edge\">\n",
       "<title>5660022320&#45;&gt;5741768432</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M788.1125,-3821.8761C769.4765,-3810.4329 745.1651,-3795.5049 727.1283,-3784.4297\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"728.6847,-3781.2782 718.3315,-3779.0281 725.0218,-3787.2434 728.6847,-3781.2782\"/>\n",
       "</g>\n",
       "<!-- 5660024336 -->\n",
       "<g id=\"node287\" class=\"node\">\n",
       "<title>5660024336</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"855,-3786 801,-3786 801,-3752 855,-3752 855,-3786\"/>\n",
       "<text text-anchor=\"middle\" x=\"828\" y=\"-3758.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (1024)</text>\n",
       "</g>\n",
       "<!-- 5660024336&#45;&gt;5741767424 -->\n",
       "<g id=\"edge296\" class=\"edge\">\n",
       "<title>5660024336&#45;&gt;5741767424</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M810.785,-3751.785C801.9935,-3742.9935 791.3186,-3732.3186 782.4885,-3723.4885\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"784.8434,-3720.8936 775.2974,-3716.2974 779.8936,-3725.8434 784.8434,-3720.8936\"/>\n",
       "</g>\n",
       "<!-- 5660023160 -->\n",
       "<g id=\"node288\" class=\"node\">\n",
       "<title>5660023160</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"927,-3786 873,-3786 873,-3752 927,-3752 927,-3786\"/>\n",
       "<text text-anchor=\"middle\" x=\"900\" y=\"-3758.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (1024)</text>\n",
       "</g>\n",
       "<!-- 5660023160&#45;&gt;5741767424 -->\n",
       "<g id=\"edge297\" class=\"edge\">\n",
       "<title>5660023160&#45;&gt;5741767424</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M872.8817,-3756.1721C869.886,-3754.7616 866.8792,-3753.3487 864,-3752 841.2428,-3741.3399 815.5003,-3729.3818 795.9703,-3720.3303\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"797.1929,-3717.0393 786.648,-3716.0117 794.2504,-3723.3909 797.1929,-3717.0393\"/>\n",
       "</g>\n",
       "<!-- 5660023552 -->\n",
       "<g id=\"node289\" class=\"node\">\n",
       "<title>5660023552</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"810.4922,-3604 711.5078,-3604 711.5078,-3570 810.4922,-3570 810.4922,-3604\"/>\n",
       "<text text-anchor=\"middle\" x=\"761\" y=\"-3576.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (256, 1024, 1, 1)</text>\n",
       "</g>\n",
       "<!-- 5660023552&#45;&gt;5741765632 -->\n",
       "<g id=\"edge299\" class=\"edge\">\n",
       "<title>5660023552&#45;&gt;5741765632</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M759.764,-3569.6966C759.0675,-3559.9445 758.1932,-3547.7049 757.4626,-3537.4768\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"760.9451,-3537.1057 756.7415,-3527.3805 753.9629,-3537.6045 760.9451,-3537.1057\"/>\n",
       "</g>\n",
       "<!-- 5660024224 -->\n",
       "<g id=\"node290\" class=\"node\">\n",
       "<title>5660024224</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"909,-3534 855,-3534 855,-3500 909,-3500 909,-3534\"/>\n",
       "<text text-anchor=\"middle\" x=\"882\" y=\"-3506.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (256)</text>\n",
       "</g>\n",
       "<!-- 5660024224&#45;&gt;5741765912 -->\n",
       "<g id=\"edge300\" class=\"edge\">\n",
       "<title>5660024224&#45;&gt;5741765912</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M864.785,-3499.785C855.9935,-3490.9935 845.3186,-3480.3186 836.4885,-3471.4885\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"838.8434,-3468.8936 829.2974,-3464.2974 833.8936,-3473.8434 838.8434,-3468.8936\"/>\n",
       "</g>\n",
       "<!-- 5660023944 -->\n",
       "<g id=\"node291\" class=\"node\">\n",
       "<title>5660023944</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"981,-3534 927,-3534 927,-3500 981,-3500 981,-3534\"/>\n",
       "<text text-anchor=\"middle\" x=\"954\" y=\"-3506.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (256)</text>\n",
       "</g>\n",
       "<!-- 5660023944&#45;&gt;5741765912 -->\n",
       "<g id=\"edge301\" class=\"edge\">\n",
       "<title>5660023944&#45;&gt;5741765912</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M926.8817,-3504.1721C923.886,-3502.7616 920.8792,-3501.3487 918,-3500 895.2428,-3489.3399 869.5003,-3477.3818 849.9703,-3468.3303\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"851.1929,-3465.0393 840.648,-3464.0117 848.2504,-3471.3909 851.1929,-3465.0393\"/>\n",
       "</g>\n",
       "<!-- 5660024392 -->\n",
       "<g id=\"node292\" class=\"node\">\n",
       "<title>5660024392</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"913.4922,-3408 820.5078,-3408 820.5078,-3374 913.4922,-3374 913.4922,-3408\"/>\n",
       "<text text-anchor=\"middle\" x=\"867\" y=\"-3380.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (256, 256, 3, 3)</text>\n",
       "</g>\n",
       "<!-- 5660024392&#45;&gt;5741764960 -->\n",
       "<g id=\"edge302\" class=\"edge\">\n",
       "<title>5660024392&#45;&gt;5741764960</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M839.8463,-3373.8761C821.7008,-3362.4329 798.0292,-3347.5049 780.4671,-3336.4297\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"782.2273,-3333.4019 771.9017,-3331.0281 778.4933,-3339.3229 782.2273,-3333.4019\"/>\n",
       "</g>\n",
       "<!-- 5741735440 -->\n",
       "<g id=\"node293\" class=\"node\">\n",
       "<title>5741735440</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"909,-3338 855,-3338 855,-3304 909,-3304 909,-3338\"/>\n",
       "<text text-anchor=\"middle\" x=\"882\" y=\"-3310.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (256)</text>\n",
       "</g>\n",
       "<!-- 5741735440&#45;&gt;5741756088 -->\n",
       "<g id=\"edge303\" class=\"edge\">\n",
       "<title>5741735440&#45;&gt;5741756088</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M864.785,-3303.785C855.9935,-3294.9935 845.3186,-3284.3186 836.4885,-3275.4885\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"838.8434,-3272.8936 829.2974,-3268.2974 833.8936,-3277.8434 838.8434,-3272.8936\"/>\n",
       "</g>\n",
       "<!-- 5741735496 -->\n",
       "<g id=\"node294\" class=\"node\">\n",
       "<title>5741735496</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"981,-3338 927,-3338 927,-3304 981,-3304 981,-3338\"/>\n",
       "<text text-anchor=\"middle\" x=\"954\" y=\"-3310.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (256)</text>\n",
       "</g>\n",
       "<!-- 5741735496&#45;&gt;5741756088 -->\n",
       "<g id=\"edge304\" class=\"edge\">\n",
       "<title>5741735496&#45;&gt;5741756088</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M926.8817,-3308.1721C923.886,-3306.7616 920.8792,-3305.3487 918,-3304 895.2428,-3293.3399 869.5003,-3281.3818 849.9703,-3272.3303\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"851.1929,-3269.0393 840.648,-3268.0117 848.2504,-3275.3909 851.1929,-3269.0393\"/>\n",
       "</g>\n",
       "<!-- 5741735104 -->\n",
       "<g id=\"node295\" class=\"node\">\n",
       "<title>5741735104</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"919.4922,-3212 820.5078,-3212 820.5078,-3178 919.4922,-3178 919.4922,-3212\"/>\n",
       "<text text-anchor=\"middle\" x=\"870\" y=\"-3184.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (1024, 256, 1, 1)</text>\n",
       "</g>\n",
       "<!-- 5741735104&#45;&gt;5741755864 -->\n",
       "<g id=\"edge305\" class=\"edge\">\n",
       "<title>5741735104&#45;&gt;5741755864</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M842.1125,-3177.8761C823.4765,-3166.4329 799.1651,-3151.5049 781.1283,-3140.4297\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"782.6847,-3137.2782 772.3315,-3135.0281 779.0218,-3143.2434 782.6847,-3137.2782\"/>\n",
       "</g>\n",
       "<!-- 5741734880 -->\n",
       "<g id=\"node296\" class=\"node\">\n",
       "<title>5741734880</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"909,-3142 855,-3142 855,-3108 909,-3108 909,-3142\"/>\n",
       "<text text-anchor=\"middle\" x=\"882\" y=\"-3114.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (1024)</text>\n",
       "</g>\n",
       "<!-- 5741734880&#45;&gt;5741755304 -->\n",
       "<g id=\"edge306\" class=\"edge\">\n",
       "<title>5741734880&#45;&gt;5741755304</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M864.785,-3107.785C855.9935,-3098.9935 845.3186,-3088.3186 836.4885,-3079.4885\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"838.8434,-3076.8936 829.2974,-3072.2974 833.8936,-3081.8434 838.8434,-3076.8936\"/>\n",
       "</g>\n",
       "<!-- 5741734936 -->\n",
       "<g id=\"node297\" class=\"node\">\n",
       "<title>5741734936</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"981,-3142 927,-3142 927,-3108 981,-3108 981,-3142\"/>\n",
       "<text text-anchor=\"middle\" x=\"954\" y=\"-3114.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (1024)</text>\n",
       "</g>\n",
       "<!-- 5741734936&#45;&gt;5741755304 -->\n",
       "<g id=\"edge307\" class=\"edge\">\n",
       "<title>5741734936&#45;&gt;5741755304</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M926.8817,-3112.1721C923.886,-3110.7616 920.8792,-3109.3487 918,-3108 895.2428,-3097.3399 869.5003,-3085.3818 849.9703,-3076.3303\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"851.1929,-3073.0393 840.648,-3072.0117 848.2504,-3079.3909 851.1929,-3073.0393\"/>\n",
       "</g>\n",
       "<!-- 5741734376 -->\n",
       "<g id=\"node298\" class=\"node\">\n",
       "<title>5741734376</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"864.4922,-2960 765.5078,-2960 765.5078,-2926 864.4922,-2926 864.4922,-2960\"/>\n",
       "<text text-anchor=\"middle\" x=\"815\" y=\"-2932.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (256, 1024, 1, 1)</text>\n",
       "</g>\n",
       "<!-- 5741734376&#45;&gt;5741754520 -->\n",
       "<g id=\"edge309\" class=\"edge\">\n",
       "<title>5741734376&#45;&gt;5741754520</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M813.764,-2925.6966C813.0675,-2915.9445 812.1932,-2903.7049 811.4626,-2893.4768\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"814.9451,-2893.1057 810.7415,-2883.3805 807.9629,-2893.6045 814.9451,-2893.1057\"/>\n",
       "</g>\n",
       "<!-- 5741734208 -->\n",
       "<g id=\"node299\" class=\"node\">\n",
       "<title>5741734208</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"963,-2890 909,-2890 909,-2856 963,-2856 963,-2890\"/>\n",
       "<text text-anchor=\"middle\" x=\"936\" y=\"-2862.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (256)</text>\n",
       "</g>\n",
       "<!-- 5741734208&#45;&gt;5741754016 -->\n",
       "<g id=\"edge310\" class=\"edge\">\n",
       "<title>5741734208&#45;&gt;5741754016</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M918.785,-2855.785C909.9935,-2846.9935 899.3186,-2836.3186 890.4885,-2827.4885\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"892.8434,-2824.8936 883.2974,-2820.2974 887.8936,-2829.8434 892.8434,-2824.8936\"/>\n",
       "</g>\n",
       "<!-- 5741734264 -->\n",
       "<g id=\"node300\" class=\"node\">\n",
       "<title>5741734264</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"1035,-2890 981,-2890 981,-2856 1035,-2856 1035,-2890\"/>\n",
       "<text text-anchor=\"middle\" x=\"1008\" y=\"-2862.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (256)</text>\n",
       "</g>\n",
       "<!-- 5741734264&#45;&gt;5741754016 -->\n",
       "<g id=\"edge311\" class=\"edge\">\n",
       "<title>5741734264&#45;&gt;5741754016</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M980.8817,-2860.1721C977.886,-2858.7616 974.8792,-2857.3487 972,-2856 949.2428,-2845.3399 923.5003,-2833.3818 903.9703,-2824.3303\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"905.1929,-2821.0393 894.648,-2820.0117 902.2504,-2827.3909 905.1929,-2821.0393\"/>\n",
       "</g>\n",
       "<!-- 5741733872 -->\n",
       "<g id=\"node301\" class=\"node\">\n",
       "<title>5741733872</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"967.4922,-2764 874.5078,-2764 874.5078,-2730 967.4922,-2730 967.4922,-2764\"/>\n",
       "<text text-anchor=\"middle\" x=\"921\" y=\"-2736.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (256, 256, 3, 3)</text>\n",
       "</g>\n",
       "<!-- 5741733872&#45;&gt;5741751936 -->\n",
       "<g id=\"edge312\" class=\"edge\">\n",
       "<title>5741733872&#45;&gt;5741751936</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M893.8463,-2729.8761C875.7008,-2718.4329 852.0292,-2703.5049 834.4671,-2692.4297\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"836.2273,-2689.4019 825.9017,-2687.0281 832.4933,-2695.3229 836.2273,-2689.4019\"/>\n",
       "</g>\n",
       "<!-- 5741733648 -->\n",
       "<g id=\"node302\" class=\"node\">\n",
       "<title>5741733648</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"963,-2694 909,-2694 909,-2660 963,-2660 963,-2694\"/>\n",
       "<text text-anchor=\"middle\" x=\"936\" y=\"-2666.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (256)</text>\n",
       "</g>\n",
       "<!-- 5741733648&#45;&gt;5741752160 -->\n",
       "<g id=\"edge313\" class=\"edge\">\n",
       "<title>5741733648&#45;&gt;5741752160</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M918.785,-2659.785C909.9935,-2650.9935 899.3186,-2640.3186 890.4885,-2631.4885\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"892.8434,-2628.8936 883.2974,-2624.2974 887.8936,-2633.8434 892.8434,-2628.8936\"/>\n",
       "</g>\n",
       "<!-- 5741733704 -->\n",
       "<g id=\"node303\" class=\"node\">\n",
       "<title>5741733704</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"1035,-2694 981,-2694 981,-2660 1035,-2660 1035,-2694\"/>\n",
       "<text text-anchor=\"middle\" x=\"1008\" y=\"-2666.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (256)</text>\n",
       "</g>\n",
       "<!-- 5741733704&#45;&gt;5741752160 -->\n",
       "<g id=\"edge314\" class=\"edge\">\n",
       "<title>5741733704&#45;&gt;5741752160</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M980.8817,-2664.1721C977.886,-2662.7616 974.8792,-2661.3487 972,-2660 949.2428,-2649.3399 923.5003,-2637.3818 903.9703,-2628.3303\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"905.1929,-2625.0393 894.648,-2624.0117 902.2504,-2631.3909 905.1929,-2625.0393\"/>\n",
       "</g>\n",
       "<!-- 5741733312 -->\n",
       "<g id=\"node304\" class=\"node\">\n",
       "<title>5741733312</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"973.4922,-2568 874.5078,-2568 874.5078,-2534 973.4922,-2534 973.4922,-2568\"/>\n",
       "<text text-anchor=\"middle\" x=\"924\" y=\"-2540.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (1024, 256, 1, 1)</text>\n",
       "</g>\n",
       "<!-- 5741733312&#45;&gt;5741751320 -->\n",
       "<g id=\"edge315\" class=\"edge\">\n",
       "<title>5741733312&#45;&gt;5741751320</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M896.1125,-2533.8761C877.4765,-2522.4329 853.1651,-2507.5049 835.1283,-2496.4297\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"836.6847,-2493.2782 826.3315,-2491.0281 833.0218,-2499.2434 836.6847,-2493.2782\"/>\n",
       "</g>\n",
       "<!-- 5741733088 -->\n",
       "<g id=\"node305\" class=\"node\">\n",
       "<title>5741733088</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"963,-2498 909,-2498 909,-2464 963,-2464 963,-2498\"/>\n",
       "<text text-anchor=\"middle\" x=\"936\" y=\"-2470.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (1024)</text>\n",
       "</g>\n",
       "<!-- 5741733088&#45;&gt;5741750928 -->\n",
       "<g id=\"edge316\" class=\"edge\">\n",
       "<title>5741733088&#45;&gt;5741750928</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M918.785,-2463.785C909.9935,-2454.9935 899.3186,-2444.3186 890.4885,-2435.4885\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"892.8434,-2432.8936 883.2974,-2428.2974 887.8936,-2437.8434 892.8434,-2432.8936\"/>\n",
       "</g>\n",
       "<!-- 5741733144 -->\n",
       "<g id=\"node306\" class=\"node\">\n",
       "<title>5741733144</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"1035,-2498 981,-2498 981,-2464 1035,-2464 1035,-2498\"/>\n",
       "<text text-anchor=\"middle\" x=\"1008\" y=\"-2470.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (1024)</text>\n",
       "</g>\n",
       "<!-- 5741733144&#45;&gt;5741750928 -->\n",
       "<g id=\"edge317\" class=\"edge\">\n",
       "<title>5741733144&#45;&gt;5741750928</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M980.8817,-2468.1721C977.886,-2466.7616 974.8792,-2465.3487 972,-2464 949.2428,-2453.3399 923.5003,-2441.3818 903.9703,-2432.3303\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"905.1929,-2429.0393 894.648,-2428.0117 902.2504,-2435.3909 905.1929,-2429.0393\"/>\n",
       "</g>\n",
       "<!-- 5741732584 -->\n",
       "<g id=\"node307\" class=\"node\">\n",
       "<title>5741732584</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"918.4922,-2316 819.5078,-2316 819.5078,-2282 918.4922,-2282 918.4922,-2316\"/>\n",
       "<text text-anchor=\"middle\" x=\"869\" y=\"-2288.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (512, 1024, 1, 1)</text>\n",
       "</g>\n",
       "<!-- 5741732584&#45;&gt;5741750032 -->\n",
       "<g id=\"edge319\" class=\"edge\">\n",
       "<title>5741732584&#45;&gt;5741750032</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M862.8202,-2281.6966C859.2632,-2271.737 854.7796,-2259.1829 851.081,-2248.8267\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"854.3669,-2247.6208 847.7073,-2239.3805 847.7747,-2249.9752 854.3669,-2247.6208\"/>\n",
       "</g>\n",
       "<!-- 5741732360 -->\n",
       "<g id=\"node308\" class=\"node\">\n",
       "<title>5741732360</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"997,-2246 943,-2246 943,-2212 997,-2212 997,-2246\"/>\n",
       "<text text-anchor=\"middle\" x=\"970\" y=\"-2218.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (512)</text>\n",
       "</g>\n",
       "<!-- 5741732360&#45;&gt;5741749136 -->\n",
       "<g id=\"edge320\" class=\"edge\">\n",
       "<title>5741732360&#45;&gt;5741749136</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M952.785,-2211.785C943.9935,-2202.9935 933.3186,-2192.3186 924.4885,-2183.4885\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"926.8434,-2180.8936 917.2974,-2176.2974 921.8936,-2185.8434 926.8434,-2180.8936\"/>\n",
       "</g>\n",
       "<!-- 5741732416 -->\n",
       "<g id=\"node309\" class=\"node\">\n",
       "<title>5741732416</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"1069,-2246 1015,-2246 1015,-2212 1069,-2212 1069,-2246\"/>\n",
       "<text text-anchor=\"middle\" x=\"1042\" y=\"-2218.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (512)</text>\n",
       "</g>\n",
       "<!-- 5741732416&#45;&gt;5741749136 -->\n",
       "<g id=\"edge321\" class=\"edge\">\n",
       "<title>5741732416&#45;&gt;5741749136</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M1014.8817,-2216.1721C1011.886,-2214.7616 1008.8792,-2213.3487 1006,-2212 983.2428,-2201.3399 957.5003,-2189.3818 937.9703,-2180.3303\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"939.1929,-2177.0393 928.648,-2176.0117 936.2504,-2183.3909 939.1929,-2177.0393\"/>\n",
       "</g>\n",
       "<!-- 5741732024 -->\n",
       "<g id=\"node310\" class=\"node\">\n",
       "<title>5741732024</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"967.4922,-2120 874.5078,-2120 874.5078,-2086 967.4922,-2086 967.4922,-2120\"/>\n",
       "<text text-anchor=\"middle\" x=\"921\" y=\"-2092.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (512, 512, 3, 3)</text>\n",
       "</g>\n",
       "<!-- 5741732024&#45;&gt;5741749024 -->\n",
       "<g id=\"edge322\" class=\"edge\">\n",
       "<title>5741732024&#45;&gt;5741749024</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M893.8463,-2085.8761C875.7008,-2074.4329 852.0292,-2059.5049 834.4671,-2048.4297\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"836.2273,-2045.4019 825.9017,-2043.0281 832.4933,-2051.3229 836.2273,-2045.4019\"/>\n",
       "</g>\n",
       "<!-- 5741731736 -->\n",
       "<g id=\"node311\" class=\"node\">\n",
       "<title>5741731736</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"963,-2050 909,-2050 909,-2016 963,-2016 963,-2050\"/>\n",
       "<text text-anchor=\"middle\" x=\"936\" y=\"-2022.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (512)</text>\n",
       "</g>\n",
       "<!-- 5741731736&#45;&gt;5741748576 -->\n",
       "<g id=\"edge323\" class=\"edge\">\n",
       "<title>5741731736&#45;&gt;5741748576</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M918.785,-2015.785C909.9935,-2006.9935 899.3186,-1996.3186 890.4885,-1987.4885\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"892.8434,-1984.8936 883.2974,-1980.2974 887.8936,-1989.8434 892.8434,-1984.8936\"/>\n",
       "</g>\n",
       "<!-- 5741731792 -->\n",
       "<g id=\"node312\" class=\"node\">\n",
       "<title>5741731792</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"1035,-2050 981,-2050 981,-2016 1035,-2016 1035,-2050\"/>\n",
       "<text text-anchor=\"middle\" x=\"1008\" y=\"-2022.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (512)</text>\n",
       "</g>\n",
       "<!-- 5741731792&#45;&gt;5741748576 -->\n",
       "<g id=\"edge324\" class=\"edge\">\n",
       "<title>5741731792&#45;&gt;5741748576</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M980.8817,-2020.1721C977.886,-2018.7616 974.8792,-2017.3487 972,-2016 949.2428,-2005.3399 923.5003,-1993.3818 903.9703,-1984.3303\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"905.1929,-1981.0393 894.648,-1980.0117 902.2504,-1987.3909 905.1929,-1981.0393\"/>\n",
       "</g>\n",
       "<!-- 5741731400 -->\n",
       "<g id=\"node313\" class=\"node\">\n",
       "<title>5741731400</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"939.4922,-1924 840.5078,-1924 840.5078,-1890 939.4922,-1890 939.4922,-1924\"/>\n",
       "<text text-anchor=\"middle\" x=\"890\" y=\"-1896.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (2048, 512, 1, 1)</text>\n",
       "</g>\n",
       "<!-- 5741731400&#45;&gt;5741743352 -->\n",
       "<g id=\"edge325\" class=\"edge\">\n",
       "<title>5741731400&#45;&gt;5741743352</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M862.1125,-1889.8761C843.4765,-1878.4329 819.1651,-1863.5049 801.1283,-1852.4297\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"802.6847,-1849.2782 792.3315,-1847.0281 799.0218,-1855.2434 802.6847,-1849.2782\"/>\n",
       "</g>\n",
       "<!-- 5741731176 -->\n",
       "<g id=\"node314\" class=\"node\">\n",
       "<title>5741731176</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"929,-1854 875,-1854 875,-1820 929,-1820 929,-1854\"/>\n",
       "<text text-anchor=\"middle\" x=\"902\" y=\"-1826.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (2048)</text>\n",
       "</g>\n",
       "<!-- 5741731176&#45;&gt;5741743520 -->\n",
       "<g id=\"edge326\" class=\"edge\">\n",
       "<title>5741731176&#45;&gt;5741743520</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M884.785,-1819.785C875.9935,-1810.9935 865.3186,-1800.3186 856.4885,-1791.4885\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"858.8434,-1788.8936 849.2974,-1784.2974 853.8936,-1793.8434 858.8434,-1788.8936\"/>\n",
       "</g>\n",
       "<!-- 5741731232 -->\n",
       "<g id=\"node315\" class=\"node\">\n",
       "<title>5741731232</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"1001,-1854 947,-1854 947,-1820 1001,-1820 1001,-1854\"/>\n",
       "<text text-anchor=\"middle\" x=\"974\" y=\"-1826.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (2048)</text>\n",
       "</g>\n",
       "<!-- 5741731232&#45;&gt;5741743520 -->\n",
       "<g id=\"edge327\" class=\"edge\">\n",
       "<title>5741731232&#45;&gt;5741743520</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M946.8817,-1824.1721C943.886,-1822.7616 940.8792,-1821.3487 938,-1820 915.2428,-1809.3399 889.5003,-1797.3818 869.9703,-1788.3303\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"871.1929,-1785.0393 860.648,-1784.0117 868.2504,-1791.3909 871.1929,-1785.0393\"/>\n",
       "</g>\n",
       "<!-- 5741743240 -->\n",
       "<g id=\"node316\" class=\"node\">\n",
       "<title>5741743240</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"676.1177,-2176 523.8823,-2176 523.8823,-2156 676.1177,-2156 676.1177,-2176\"/>\n",
       "<text text-anchor=\"middle\" x=\"600\" y=\"-2162.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">NativeBatchNormBackward</text>\n",
       "</g>\n",
       "<!-- 5741743240&#45;&gt;5741743072 -->\n",
       "<g id=\"edge328\" class=\"edge\">\n",
       "<title>5741743240&#45;&gt;5741743072</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M609.3161,-2155.8579C627.7258,-2134.7161 667,-2083.6751 667,-2033 667,-2033 667,-2033 667,-1837 667,-1798.5157 690.709,-1758.7842 706.7072,-1736.355\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"709.6667,-1738.2395 712.7986,-1728.1181 704.0385,-1734.0773 709.6667,-1738.2395\"/>\n",
       "</g>\n",
       "<!-- 5741743912&#45;&gt;5741743240 -->\n",
       "<g id=\"edge329\" class=\"edge\">\n",
       "<title>5741743912&#45;&gt;5741743240</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M652.878,-2218.878C643.3823,-2209.3823 628.9794,-2194.9794 617.602,-2183.602\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"619.8522,-2180.9024 610.3062,-2176.3062 614.9024,-2185.8522 619.8522,-2180.9024\"/>\n",
       "</g>\n",
       "<!-- 5741731568 -->\n",
       "<g id=\"node318\" class=\"node\">\n",
       "<title>5741731568</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"690.4922,-2316 585.5078,-2316 585.5078,-2282 690.4922,-2282 690.4922,-2316\"/>\n",
       "<text text-anchor=\"middle\" x=\"638\" y=\"-2288.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (2048, 1024, 1, 1)</text>\n",
       "</g>\n",
       "<!-- 5741731568&#45;&gt;5741743912 -->\n",
       "<g id=\"edge331\" class=\"edge\">\n",
       "<title>5741731568&#45;&gt;5741743912</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M644.1798,-2281.6966C647.7368,-2271.737 652.2204,-2259.1829 655.919,-2248.8267\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"659.2253,-2249.9752 659.2927,-2239.3805 652.6331,-2247.6208 659.2253,-2249.9752\"/>\n",
       "</g>\n",
       "<!-- 5638186152 -->\n",
       "<g id=\"node319\" class=\"node\">\n",
       "<title>5638186152</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"492,-2246 438,-2246 438,-2212 492,-2212 492,-2246\"/>\n",
       "<text text-anchor=\"middle\" x=\"465\" y=\"-2218.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (2048)</text>\n",
       "</g>\n",
       "<!-- 5638186152&#45;&gt;5741743240 -->\n",
       "<g id=\"edge332\" class=\"edge\">\n",
       "<title>5638186152&#45;&gt;5741743240</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M492.1183,-2216.1721C495.114,-2214.7616 498.1208,-2213.3487 501,-2212 523.7572,-2201.3399 549.4997,-2189.3818 569.0297,-2180.3303\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"570.7496,-2183.3909 578.352,-2176.0117 567.8071,-2177.0393 570.7496,-2183.3909\"/>\n",
       "</g>\n",
       "<!-- 5741731288 -->\n",
       "<g id=\"node320\" class=\"node\">\n",
       "<title>5741731288</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"564,-2246 510,-2246 510,-2212 564,-2212 564,-2246\"/>\n",
       "<text text-anchor=\"middle\" x=\"537\" y=\"-2218.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (2048)</text>\n",
       "</g>\n",
       "<!-- 5741731288&#45;&gt;5741743240 -->\n",
       "<g id=\"edge333\" class=\"edge\">\n",
       "<title>5741731288&#45;&gt;5741743240</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M554.215,-2211.785C563.0065,-2202.9935 573.6814,-2192.3186 582.5115,-2183.4885\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"585.1064,-2185.8434 589.7026,-2176.2974 580.1566,-2180.8936 585.1064,-2185.8434\"/>\n",
       "</g>\n",
       "<!-- 5741730672 -->\n",
       "<g id=\"node321\" class=\"node\">\n",
       "<title>5741730672</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"884.4922,-1672 785.5078,-1672 785.5078,-1638 884.4922,-1638 884.4922,-1672\"/>\n",
       "<text text-anchor=\"middle\" x=\"835\" y=\"-1644.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (512, 2048, 1, 1)</text>\n",
       "</g>\n",
       "<!-- 5741730672&#45;&gt;5741741840 -->\n",
       "<g id=\"edge334\" class=\"edge\">\n",
       "<title>5741730672&#45;&gt;5741741840</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M833.764,-1637.6966C833.0675,-1627.9445 832.1932,-1615.7049 831.4626,-1605.4768\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"834.9451,-1605.1057 830.7415,-1595.3805 827.9629,-1605.6045 834.9451,-1605.1057\"/>\n",
       "</g>\n",
       "<!-- 5741730504 -->\n",
       "<g id=\"node322\" class=\"node\">\n",
       "<title>5741730504</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"983,-1602 929,-1602 929,-1568 983,-1568 983,-1602\"/>\n",
       "<text text-anchor=\"middle\" x=\"956\" y=\"-1574.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (512)</text>\n",
       "</g>\n",
       "<!-- 5741730504&#45;&gt;5741741560 -->\n",
       "<g id=\"edge335\" class=\"edge\">\n",
       "<title>5741730504&#45;&gt;5741741560</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M938.785,-1567.785C929.9935,-1558.9935 919.3186,-1548.3186 910.4885,-1539.4885\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"912.8434,-1536.8936 903.2974,-1532.2974 907.8936,-1541.8434 912.8434,-1536.8936\"/>\n",
       "</g>\n",
       "<!-- 5741730560 -->\n",
       "<g id=\"node323\" class=\"node\">\n",
       "<title>5741730560</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"1055,-1602 1001,-1602 1001,-1568 1055,-1568 1055,-1602\"/>\n",
       "<text text-anchor=\"middle\" x=\"1028\" y=\"-1574.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (512)</text>\n",
       "</g>\n",
       "<!-- 5741730560&#45;&gt;5741741560 -->\n",
       "<g id=\"edge336\" class=\"edge\">\n",
       "<title>5741730560&#45;&gt;5741741560</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M1000.8817,-1572.1721C997.886,-1570.7616 994.8792,-1569.3487 992,-1568 969.2428,-1557.3399 943.5003,-1545.3818 923.9703,-1536.3303\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"925.1929,-1533.0393 914.648,-1532.0117 922.2504,-1539.3909 925.1929,-1533.0393\"/>\n",
       "</g>\n",
       "<!-- 5741730168 -->\n",
       "<g id=\"node324\" class=\"node\">\n",
       "<title>5741730168</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"987.4922,-1476 894.5078,-1476 894.5078,-1442 987.4922,-1442 987.4922,-1476\"/>\n",
       "<text text-anchor=\"middle\" x=\"941\" y=\"-1448.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (512, 512, 3, 3)</text>\n",
       "</g>\n",
       "<!-- 5741730168&#45;&gt;5741740944 -->\n",
       "<g id=\"edge337\" class=\"edge\">\n",
       "<title>5741730168&#45;&gt;5741740944</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M913.8463,-1441.8761C895.7008,-1430.4329 872.0292,-1415.5049 854.4671,-1404.4297\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"856.2273,-1401.4019 845.9017,-1399.0281 852.4933,-1407.3229 856.2273,-1401.4019\"/>\n",
       "</g>\n",
       "<!-- 5741729944 -->\n",
       "<g id=\"node325\" class=\"node\">\n",
       "<title>5741729944</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"983,-1406 929,-1406 929,-1372 983,-1372 983,-1406\"/>\n",
       "<text text-anchor=\"middle\" x=\"956\" y=\"-1378.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (512)</text>\n",
       "</g>\n",
       "<!-- 5741729944&#45;&gt;5741740440 -->\n",
       "<g id=\"edge338\" class=\"edge\">\n",
       "<title>5741729944&#45;&gt;5741740440</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M938.785,-1371.785C929.9935,-1362.9935 919.3186,-1352.3186 910.4885,-1343.4885\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"912.8434,-1340.8936 903.2974,-1336.2974 907.8936,-1345.8434 912.8434,-1340.8936\"/>\n",
       "</g>\n",
       "<!-- 5741730000 -->\n",
       "<g id=\"node326\" class=\"node\">\n",
       "<title>5741730000</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"1055,-1406 1001,-1406 1001,-1372 1055,-1372 1055,-1406\"/>\n",
       "<text text-anchor=\"middle\" x=\"1028\" y=\"-1378.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (512)</text>\n",
       "</g>\n",
       "<!-- 5741730000&#45;&gt;5741740440 -->\n",
       "<g id=\"edge339\" class=\"edge\">\n",
       "<title>5741730000&#45;&gt;5741740440</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M1000.8817,-1376.1721C997.886,-1374.7616 994.8792,-1373.3487 992,-1372 969.2428,-1361.3399 943.5003,-1349.3818 923.9703,-1340.3303\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"925.1929,-1337.0393 914.648,-1336.0117 922.2504,-1343.3909 925.1929,-1337.0393\"/>\n",
       "</g>\n",
       "<!-- 5741729608 -->\n",
       "<g id=\"node327\" class=\"node\">\n",
       "<title>5741729608</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"993.4922,-1280 894.5078,-1280 894.5078,-1246 993.4922,-1246 993.4922,-1280\"/>\n",
       "<text text-anchor=\"middle\" x=\"944\" y=\"-1252.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (2048, 512, 1, 1)</text>\n",
       "</g>\n",
       "<!-- 5741729608&#45;&gt;5741735664 -->\n",
       "<g id=\"edge340\" class=\"edge\">\n",
       "<title>5741729608&#45;&gt;5741735664</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M916.1125,-1245.8761C897.4765,-1234.4329 873.1651,-1219.5049 855.1283,-1208.4297\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"856.6847,-1205.2782 846.3315,-1203.0281 853.0218,-1211.2434 856.6847,-1205.2782\"/>\n",
       "</g>\n",
       "<!-- 5741729384 -->\n",
       "<g id=\"node328\" class=\"node\">\n",
       "<title>5741729384</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"983,-1210 929,-1210 929,-1176 983,-1176 983,-1210\"/>\n",
       "<text text-anchor=\"middle\" x=\"956\" y=\"-1182.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (2048)</text>\n",
       "</g>\n",
       "<!-- 5741729384&#45;&gt;5741735160 -->\n",
       "<g id=\"edge341\" class=\"edge\">\n",
       "<title>5741729384&#45;&gt;5741735160</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M938.785,-1175.785C929.9935,-1166.9935 919.3186,-1156.3186 910.4885,-1147.4885\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"912.8434,-1144.8936 903.2974,-1140.2974 907.8936,-1149.8434 912.8434,-1144.8936\"/>\n",
       "</g>\n",
       "<!-- 5741729440 -->\n",
       "<g id=\"node329\" class=\"node\">\n",
       "<title>5741729440</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"1055,-1210 1001,-1210 1001,-1176 1055,-1176 1055,-1210\"/>\n",
       "<text text-anchor=\"middle\" x=\"1028\" y=\"-1182.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (2048)</text>\n",
       "</g>\n",
       "<!-- 5741729440&#45;&gt;5741735160 -->\n",
       "<g id=\"edge342\" class=\"edge\">\n",
       "<title>5741729440&#45;&gt;5741735160</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M1000.8817,-1180.1721C997.886,-1178.7616 994.8792,-1177.3487 992,-1176 969.2428,-1165.3399 943.5003,-1153.3818 923.9703,-1144.3303\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"925.1929,-1141.0393 914.648,-1140.0117 922.2504,-1147.3909 925.1929,-1141.0393\"/>\n",
       "</g>\n",
       "<!-- 5741728936 -->\n",
       "<g id=\"node330\" class=\"node\">\n",
       "<title>5741728936</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"938.4922,-1028 839.5078,-1028 839.5078,-994 938.4922,-994 938.4922,-1028\"/>\n",
       "<text text-anchor=\"middle\" x=\"889\" y=\"-1000.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (512, 2048, 1, 1)</text>\n",
       "</g>\n",
       "<!-- 5741728936&#45;&gt;5741734320 -->\n",
       "<g id=\"edge344\" class=\"edge\">\n",
       "<title>5741728936&#45;&gt;5741734320</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M887.764,-993.6966C887.0675,-983.9445 886.1932,-971.7049 885.4626,-961.4768\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"888.9451,-961.1057 884.7415,-951.3805 881.9629,-961.6045 888.9451,-961.1057\"/>\n",
       "</g>\n",
       "<!-- 5741728768 -->\n",
       "<g id=\"node331\" class=\"node\">\n",
       "<title>5741728768</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"1037,-958 983,-958 983,-924 1037,-924 1037,-958\"/>\n",
       "<text text-anchor=\"middle\" x=\"1010\" y=\"-930.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (512)</text>\n",
       "</g>\n",
       "<!-- 5741728768&#45;&gt;5741733928 -->\n",
       "<g id=\"edge345\" class=\"edge\">\n",
       "<title>5741728768&#45;&gt;5741733928</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M992.785,-923.785C983.9935,-914.9935 973.3186,-904.3186 964.4885,-895.4885\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"966.8434,-892.8936 957.2974,-888.2974 961.8936,-897.8434 966.8434,-892.8936\"/>\n",
       "</g>\n",
       "<!-- 5741728824 -->\n",
       "<g id=\"node332\" class=\"node\">\n",
       "<title>5741728824</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"1109,-958 1055,-958 1055,-924 1109,-924 1109,-958\"/>\n",
       "<text text-anchor=\"middle\" x=\"1082\" y=\"-930.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (512)</text>\n",
       "</g>\n",
       "<!-- 5741728824&#45;&gt;5741733928 -->\n",
       "<g id=\"edge346\" class=\"edge\">\n",
       "<title>5741728824&#45;&gt;5741733928</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M1054.8817,-928.1721C1051.886,-926.7616 1048.8792,-925.3487 1046,-924 1023.2428,-913.3399 997.5003,-901.3818 977.9703,-892.3303\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"979.1929,-889.0393 968.648,-888.0117 976.2504,-895.3909 979.1929,-889.0393\"/>\n",
       "</g>\n",
       "<!-- 5741728488 -->\n",
       "<g id=\"node333\" class=\"node\">\n",
       "<title>5741728488</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"1041.4922,-832 948.5078,-832 948.5078,-798 1041.4922,-798 1041.4922,-832\"/>\n",
       "<text text-anchor=\"middle\" x=\"995\" y=\"-804.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (512, 512, 3, 3)</text>\n",
       "</g>\n",
       "<!-- 5741728488&#45;&gt;5741733200 -->\n",
       "<g id=\"edge347\" class=\"edge\">\n",
       "<title>5741728488&#45;&gt;5741733200</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M967.8463,-797.8761C949.7008,-786.4329 926.0292,-771.5049 908.4671,-760.4297\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"910.2273,-757.4019 899.9017,-755.0281 906.4933,-763.3229 910.2273,-757.4019\"/>\n",
       "</g>\n",
       "<!-- 5741728264 -->\n",
       "<g id=\"node334\" class=\"node\">\n",
       "<title>5741728264</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"1037,-762 983,-762 983,-728 1037,-728 1037,-762\"/>\n",
       "<text text-anchor=\"middle\" x=\"1010\" y=\"-734.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (512)</text>\n",
       "</g>\n",
       "<!-- 5741728264&#45;&gt;5741732752 -->\n",
       "<g id=\"edge348\" class=\"edge\">\n",
       "<title>5741728264&#45;&gt;5741732752</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M992.785,-727.785C983.9935,-718.9935 973.3186,-708.3186 964.4885,-699.4885\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"966.8434,-696.8936 957.2974,-692.2974 961.8936,-701.8434 966.8434,-696.8936\"/>\n",
       "</g>\n",
       "<!-- 5741728320 -->\n",
       "<g id=\"node335\" class=\"node\">\n",
       "<title>5741728320</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"1109,-762 1055,-762 1055,-728 1109,-728 1109,-762\"/>\n",
       "<text text-anchor=\"middle\" x=\"1082\" y=\"-734.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (512)</text>\n",
       "</g>\n",
       "<!-- 5741728320&#45;&gt;5741732752 -->\n",
       "<g id=\"edge349\" class=\"edge\">\n",
       "<title>5741728320&#45;&gt;5741732752</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M1054.8817,-732.1721C1051.886,-730.7616 1048.8792,-729.3487 1046,-728 1023.2428,-717.3399 997.5003,-705.3818 977.9703,-696.3303\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"979.1929,-693.0393 968.648,-692.0117 976.2504,-699.3909 979.1929,-693.0393\"/>\n",
       "</g>\n",
       "<!-- 5741727984 -->\n",
       "<g id=\"node336\" class=\"node\">\n",
       "<title>5741727984</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"1047.4922,-636 948.5078,-636 948.5078,-602 1047.4922,-602 1047.4922,-636\"/>\n",
       "<text text-anchor=\"middle\" x=\"998\" y=\"-608.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (2048, 512, 1, 1)</text>\n",
       "</g>\n",
       "<!-- 5741727984&#45;&gt;5741732080 -->\n",
       "<g id=\"edge350\" class=\"edge\">\n",
       "<title>5741727984&#45;&gt;5741732080</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M970.1125,-601.8761C951.4765,-590.4329 927.1651,-575.5049 909.1283,-564.4297\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"910.6847,-561.2782 900.3315,-559.0281 907.0218,-567.2434 910.6847,-561.2782\"/>\n",
       "</g>\n",
       "<!-- 5660123088 -->\n",
       "<g id=\"node337\" class=\"node\">\n",
       "<title>5660123088</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"1037,-566 983,-566 983,-532 1037,-532 1037,-566\"/>\n",
       "<text text-anchor=\"middle\" x=\"1010\" y=\"-538.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (2048)</text>\n",
       "</g>\n",
       "<!-- 5660123088&#45;&gt;4900957208 -->\n",
       "<g id=\"edge351\" class=\"edge\">\n",
       "<title>5660123088&#45;&gt;4900957208</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M992.785,-531.785C983.9935,-522.9935 973.3186,-512.3186 964.4885,-503.4885\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"966.8434,-500.8936 957.2974,-496.2974 961.8936,-505.8434 966.8434,-500.8936\"/>\n",
       "</g>\n",
       "<!-- 5741727816 -->\n",
       "<g id=\"node338\" class=\"node\">\n",
       "<title>5741727816</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"1109,-566 1055,-566 1055,-532 1109,-532 1109,-566\"/>\n",
       "<text text-anchor=\"middle\" x=\"1082\" y=\"-538.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (2048)</text>\n",
       "</g>\n",
       "<!-- 5741727816&#45;&gt;4900957208 -->\n",
       "<g id=\"edge352\" class=\"edge\">\n",
       "<title>5741727816&#45;&gt;4900957208</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M1054.8817,-536.1721C1051.886,-534.7616 1048.8792,-533.3487 1046,-532 1023.2428,-521.3399 997.5003,-509.3818 977.9703,-500.3303\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"979.1929,-497.0393 968.648,-496.0117 976.2504,-503.3909 979.1929,-497.0393\"/>\n",
       "</g>\n",
       "<!-- 5660022880 -->\n",
       "<g id=\"node339\" class=\"node\">\n",
       "<title>5660022880</title>\n",
       "<polygon fill=\"#d3d3d3\" stroke=\"#000000\" points=\"966.9746,-139 895.0254,-139 895.0254,-119 966.9746,-119 966.9746,-139\"/>\n",
       "<text text-anchor=\"middle\" x=\"931\" y=\"-125.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\">TBackward</text>\n",
       "</g>\n",
       "<!-- 5660022880&#45;&gt;5660024784 -->\n",
       "<g id=\"edge354\" class=\"edge\">\n",
       "<title>5660022880&#45;&gt;5660024784</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M914.7726,-118.878C898.5754,-108.7747 873.4718,-93.1161 854.7806,-81.4572\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"856.5242,-78.4198 846.1871,-76.0969 852.8195,-84.3591 856.5242,-78.4198\"/>\n",
       "</g>\n",
       "<!-- 5660122360 -->\n",
       "<g id=\"node340\" class=\"node\">\n",
       "<title>5660122360</title>\n",
       "<polygon fill=\"#add8e6\" stroke=\"#000000\" points=\"972.4922,-216 891.5078,-216 891.5078,-182 972.4922,-182 972.4922,-216\"/>\n",
       "<text text-anchor=\"middle\" x=\"932\" y=\"-188.4\" font-family=\"Times,serif\" font-size=\"12.00\" fill=\"#000000\"> (1000, 2048)</text>\n",
       "</g>\n",
       "<!-- 5660122360&#45;&gt;5660022880 -->\n",
       "<g id=\"edge355\" class=\"edge\">\n",
       "<title>5660122360&#45;&gt;5660022880</title>\n",
       "<path fill=\"none\" stroke=\"#000000\" d=\"M931.7528,-181.6966C931.6135,-171.9445 931.4386,-159.7049 931.2925,-149.4768\"/>\n",
       "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"934.7909,-149.3295 931.1483,-139.3805 927.7916,-149.4296 934.7909,-149.3295\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.dot.Digraph at 0x1563bdc18>"
      ]
     },
     "execution_count": 79,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "i = torch.rand(10, 3, 224, 224)\n",
    "make_dot(resnet50(i).mean()) #, params=dict(resnet50.named_parameters()))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Version: {'net': <class '__main__.ResNet'>, 'block': <class '__main__.Bottleneck'>, 'layers': [3, 4, 6, 3], 'num_classes': 1000}\n",
      "Config: {'conv': <class 'torch.nn.modules.conv.Conv2d'>, 'conv_init': 'fan_out', 'nonlinearity': 'relu', 'last_bn_0_init': False, 'activation': <function <lambda> at 0x122955840>}\n"
     ]
    }
   ],
   "source": [
    "resnet50 = build_resnet('resnet50', 'classic')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "----------------------------------------------------------------\n",
      "        Layer (type)               Output Shape         Param #\n",
      "================================================================\n",
      "            Conv2d-1         [-1, 64, 112, 112]           9,408\n",
      "       BatchNorm2d-2         [-1, 64, 112, 112]             128\n",
      "              ReLU-3         [-1, 64, 112, 112]               0\n",
      "         MaxPool2d-4           [-1, 64, 56, 56]               0\n",
      "            Conv2d-5           [-1, 64, 56, 56]           4,096\n",
      "       BatchNorm2d-6           [-1, 64, 56, 56]             128\n",
      "              ReLU-7           [-1, 64, 56, 56]               0\n",
      "            Conv2d-8           [-1, 64, 56, 56]          36,864\n",
      "       BatchNorm2d-9           [-1, 64, 56, 56]             128\n",
      "             ReLU-10           [-1, 64, 56, 56]               0\n",
      "           Conv2d-11          [-1, 256, 56, 56]          16,384\n",
      "      BatchNorm2d-12          [-1, 256, 56, 56]             512\n",
      "           Conv2d-13          [-1, 256, 56, 56]          16,384\n",
      "      BatchNorm2d-14          [-1, 256, 56, 56]             512\n",
      "             ReLU-15          [-1, 256, 56, 56]               0\n",
      "       Bottleneck-16          [-1, 256, 56, 56]               0\n",
      "           Conv2d-17           [-1, 64, 56, 56]          16,384\n",
      "      BatchNorm2d-18           [-1, 64, 56, 56]             128\n",
      "             ReLU-19           [-1, 64, 56, 56]               0\n",
      "           Conv2d-20           [-1, 64, 56, 56]          36,864\n",
      "      BatchNorm2d-21           [-1, 64, 56, 56]             128\n",
      "             ReLU-22           [-1, 64, 56, 56]               0\n",
      "           Conv2d-23          [-1, 256, 56, 56]          16,384\n",
      "      BatchNorm2d-24          [-1, 256, 56, 56]             512\n",
      "             ReLU-25          [-1, 256, 56, 56]               0\n",
      "       Bottleneck-26          [-1, 256, 56, 56]               0\n",
      "           Conv2d-27           [-1, 64, 56, 56]          16,384\n",
      "      BatchNorm2d-28           [-1, 64, 56, 56]             128\n",
      "             ReLU-29           [-1, 64, 56, 56]               0\n",
      "           Conv2d-30           [-1, 64, 56, 56]          36,864\n",
      "      BatchNorm2d-31           [-1, 64, 56, 56]             128\n",
      "             ReLU-32           [-1, 64, 56, 56]               0\n",
      "           Conv2d-33          [-1, 256, 56, 56]          16,384\n",
      "      BatchNorm2d-34          [-1, 256, 56, 56]             512\n",
      "             ReLU-35          [-1, 256, 56, 56]               0\n",
      "       Bottleneck-36          [-1, 256, 56, 56]               0\n",
      "           Conv2d-37          [-1, 128, 56, 56]          32,768\n",
      "      BatchNorm2d-38          [-1, 128, 56, 56]             256\n",
      "             ReLU-39          [-1, 128, 56, 56]               0\n",
      "           Conv2d-40          [-1, 128, 28, 28]         147,456\n",
      "      BatchNorm2d-41          [-1, 128, 28, 28]             256\n",
      "             ReLU-42          [-1, 128, 28, 28]               0\n",
      "           Conv2d-43          [-1, 512, 28, 28]          65,536\n",
      "      BatchNorm2d-44          [-1, 512, 28, 28]           1,024\n",
      "           Conv2d-45          [-1, 512, 28, 28]         131,072\n",
      "      BatchNorm2d-46          [-1, 512, 28, 28]           1,024\n",
      "             ReLU-47          [-1, 512, 28, 28]               0\n",
      "       Bottleneck-48          [-1, 512, 28, 28]               0\n",
      "           Conv2d-49          [-1, 128, 28, 28]          65,536\n",
      "      BatchNorm2d-50          [-1, 128, 28, 28]             256\n",
      "             ReLU-51          [-1, 128, 28, 28]               0\n",
      "           Conv2d-52          [-1, 128, 28, 28]         147,456\n",
      "      BatchNorm2d-53          [-1, 128, 28, 28]             256\n",
      "             ReLU-54          [-1, 128, 28, 28]               0\n",
      "           Conv2d-55          [-1, 512, 28, 28]          65,536\n",
      "      BatchNorm2d-56          [-1, 512, 28, 28]           1,024\n",
      "             ReLU-57          [-1, 512, 28, 28]               0\n",
      "       Bottleneck-58          [-1, 512, 28, 28]               0\n",
      "           Conv2d-59          [-1, 128, 28, 28]          65,536\n",
      "      BatchNorm2d-60          [-1, 128, 28, 28]             256\n",
      "             ReLU-61          [-1, 128, 28, 28]               0\n",
      "           Conv2d-62          [-1, 128, 28, 28]         147,456\n",
      "      BatchNorm2d-63          [-1, 128, 28, 28]             256\n",
      "             ReLU-64          [-1, 128, 28, 28]               0\n",
      "           Conv2d-65          [-1, 512, 28, 28]          65,536\n",
      "      BatchNorm2d-66          [-1, 512, 28, 28]           1,024\n",
      "             ReLU-67          [-1, 512, 28, 28]               0\n",
      "       Bottleneck-68          [-1, 512, 28, 28]               0\n",
      "           Conv2d-69          [-1, 128, 28, 28]          65,536\n",
      "      BatchNorm2d-70          [-1, 128, 28, 28]             256\n",
      "             ReLU-71          [-1, 128, 28, 28]               0\n",
      "           Conv2d-72          [-1, 128, 28, 28]         147,456\n",
      "      BatchNorm2d-73          [-1, 128, 28, 28]             256\n",
      "             ReLU-74          [-1, 128, 28, 28]               0\n",
      "           Conv2d-75          [-1, 512, 28, 28]          65,536\n",
      "      BatchNorm2d-76          [-1, 512, 28, 28]           1,024\n",
      "             ReLU-77          [-1, 512, 28, 28]               0\n",
      "       Bottleneck-78          [-1, 512, 28, 28]               0\n",
      "           Conv2d-79          [-1, 256, 28, 28]         131,072\n",
      "      BatchNorm2d-80          [-1, 256, 28, 28]             512\n",
      "             ReLU-81          [-1, 256, 28, 28]               0\n",
      "           Conv2d-82          [-1, 256, 14, 14]         589,824\n",
      "      BatchNorm2d-83          [-1, 256, 14, 14]             512\n",
      "             ReLU-84          [-1, 256, 14, 14]               0\n",
      "           Conv2d-85         [-1, 1024, 14, 14]         262,144\n",
      "      BatchNorm2d-86         [-1, 1024, 14, 14]           2,048\n",
      "           Conv2d-87         [-1, 1024, 14, 14]         524,288\n",
      "      BatchNorm2d-88         [-1, 1024, 14, 14]           2,048\n",
      "             ReLU-89         [-1, 1024, 14, 14]               0\n",
      "       Bottleneck-90         [-1, 1024, 14, 14]               0\n",
      "           Conv2d-91          [-1, 256, 14, 14]         262,144\n",
      "      BatchNorm2d-92          [-1, 256, 14, 14]             512\n",
      "             ReLU-93          [-1, 256, 14, 14]               0\n",
      "           Conv2d-94          [-1, 256, 14, 14]         589,824\n",
      "      BatchNorm2d-95          [-1, 256, 14, 14]             512\n",
      "             ReLU-96          [-1, 256, 14, 14]               0\n",
      "           Conv2d-97         [-1, 1024, 14, 14]         262,144\n",
      "      BatchNorm2d-98         [-1, 1024, 14, 14]           2,048\n",
      "             ReLU-99         [-1, 1024, 14, 14]               0\n",
      "      Bottleneck-100         [-1, 1024, 14, 14]               0\n",
      "          Conv2d-101          [-1, 256, 14, 14]         262,144\n",
      "     BatchNorm2d-102          [-1, 256, 14, 14]             512\n",
      "            ReLU-103          [-1, 256, 14, 14]               0\n",
      "          Conv2d-104          [-1, 256, 14, 14]         589,824\n",
      "     BatchNorm2d-105          [-1, 256, 14, 14]             512\n",
      "            ReLU-106          [-1, 256, 14, 14]               0\n",
      "          Conv2d-107         [-1, 1024, 14, 14]         262,144\n",
      "     BatchNorm2d-108         [-1, 1024, 14, 14]           2,048\n",
      "            ReLU-109         [-1, 1024, 14, 14]               0\n",
      "      Bottleneck-110         [-1, 1024, 14, 14]               0\n",
      "          Conv2d-111          [-1, 256, 14, 14]         262,144\n",
      "     BatchNorm2d-112          [-1, 256, 14, 14]             512\n",
      "            ReLU-113          [-1, 256, 14, 14]               0\n",
      "          Conv2d-114          [-1, 256, 14, 14]         589,824\n",
      "     BatchNorm2d-115          [-1, 256, 14, 14]             512\n",
      "            ReLU-116          [-1, 256, 14, 14]               0\n",
      "          Conv2d-117         [-1, 1024, 14, 14]         262,144\n",
      "     BatchNorm2d-118         [-1, 1024, 14, 14]           2,048\n",
      "            ReLU-119         [-1, 1024, 14, 14]               0\n",
      "      Bottleneck-120         [-1, 1024, 14, 14]               0\n",
      "          Conv2d-121          [-1, 256, 14, 14]         262,144\n",
      "     BatchNorm2d-122          [-1, 256, 14, 14]             512\n",
      "            ReLU-123          [-1, 256, 14, 14]               0\n",
      "          Conv2d-124          [-1, 256, 14, 14]         589,824\n",
      "     BatchNorm2d-125          [-1, 256, 14, 14]             512\n",
      "            ReLU-126          [-1, 256, 14, 14]               0\n",
      "          Conv2d-127         [-1, 1024, 14, 14]         262,144\n",
      "     BatchNorm2d-128         [-1, 1024, 14, 14]           2,048\n",
      "            ReLU-129         [-1, 1024, 14, 14]               0\n",
      "      Bottleneck-130         [-1, 1024, 14, 14]               0\n",
      "          Conv2d-131          [-1, 256, 14, 14]         262,144\n",
      "     BatchNorm2d-132          [-1, 256, 14, 14]             512\n",
      "            ReLU-133          [-1, 256, 14, 14]               0\n",
      "          Conv2d-134          [-1, 256, 14, 14]         589,824\n",
      "     BatchNorm2d-135          [-1, 256, 14, 14]             512\n",
      "            ReLU-136          [-1, 256, 14, 14]               0\n",
      "          Conv2d-137         [-1, 1024, 14, 14]         262,144\n",
      "     BatchNorm2d-138         [-1, 1024, 14, 14]           2,048\n",
      "            ReLU-139         [-1, 1024, 14, 14]               0\n",
      "      Bottleneck-140         [-1, 1024, 14, 14]               0\n",
      "          Conv2d-141          [-1, 512, 14, 14]         524,288\n",
      "     BatchNorm2d-142          [-1, 512, 14, 14]           1,024\n",
      "            ReLU-143          [-1, 512, 14, 14]               0\n",
      "          Conv2d-144            [-1, 512, 7, 7]       2,359,296\n",
      "     BatchNorm2d-145            [-1, 512, 7, 7]           1,024\n",
      "            ReLU-146            [-1, 512, 7, 7]               0\n",
      "          Conv2d-147           [-1, 2048, 7, 7]       1,048,576\n",
      "     BatchNorm2d-148           [-1, 2048, 7, 7]           4,096\n",
      "          Conv2d-149           [-1, 2048, 7, 7]       2,097,152\n",
      "     BatchNorm2d-150           [-1, 2048, 7, 7]           4,096\n",
      "            ReLU-151           [-1, 2048, 7, 7]               0\n",
      "      Bottleneck-152           [-1, 2048, 7, 7]               0\n",
      "          Conv2d-153            [-1, 512, 7, 7]       1,048,576\n",
      "     BatchNorm2d-154            [-1, 512, 7, 7]           1,024\n",
      "            ReLU-155            [-1, 512, 7, 7]               0\n",
      "          Conv2d-156            [-1, 512, 7, 7]       2,359,296\n",
      "     BatchNorm2d-157            [-1, 512, 7, 7]           1,024\n",
      "            ReLU-158            [-1, 512, 7, 7]               0\n",
      "          Conv2d-159           [-1, 2048, 7, 7]       1,048,576\n",
      "     BatchNorm2d-160           [-1, 2048, 7, 7]           4,096\n",
      "            ReLU-161           [-1, 2048, 7, 7]               0\n",
      "      Bottleneck-162           [-1, 2048, 7, 7]               0\n",
      "          Conv2d-163            [-1, 512, 7, 7]       1,048,576\n",
      "     BatchNorm2d-164            [-1, 512, 7, 7]           1,024\n",
      "            ReLU-165            [-1, 512, 7, 7]               0\n",
      "          Conv2d-166            [-1, 512, 7, 7]       2,359,296\n",
      "     BatchNorm2d-167            [-1, 512, 7, 7]           1,024\n",
      "            ReLU-168            [-1, 512, 7, 7]               0\n",
      "          Conv2d-169           [-1, 2048, 7, 7]       1,048,576\n",
      "     BatchNorm2d-170           [-1, 2048, 7, 7]           4,096\n",
      "            ReLU-171           [-1, 2048, 7, 7]               0\n",
      "      Bottleneck-172           [-1, 2048, 7, 7]               0\n",
      "AdaptiveAvgPool2d-173           [-1, 2048, 1, 1]               0\n",
      "          Linear-174                 [-1, 1000]       2,049,000\n",
      "================================================================\n",
      "Total params: 25,557,032\n",
      "Trainable params: 25,557,032\n",
      "Non-trainable params: 0\n",
      "----------------------------------------------------------------\n",
      "Input size (MB): 0.57\n",
      "Forward/backward pass size (MB): 286.56\n",
      "Params size (MB): 97.49\n",
      "Estimated Total Size (MB): 384.62\n",
      "----------------------------------------------------------------\n"
     ]
    }
   ],
   "source": [
    "summary(resnet50, (3, 224, 224));"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Version: {'net': <class '__main__.ResNet'>, 'block': <class '__main__.Bottleneck'>, 'layers': [3, 4, 6, 3], 'num_classes': 1000}\n",
      "Config: {'conv': <class 'torch.nn.modules.conv.Conv2d'>, 'conv_init': 'fan_in', 'nonlinearity': 'relu', 'last_bn_0_init': False, 'activation': <function <lambda> at 0x12298c7b8>}\n"
     ]
    }
   ],
   "source": [
    "build_resnet('resnet50', 'fanin');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
